DRF不适用于wagtail

时间:2016-09-26 08:38:31

标签: python django python-3.x django-rest-framework wagtail

我已经将DRF用于休息api和puput用于建立在w w之上的博客。在使用puput之前,我的其余api曾经工作但现在不行。例如,当我尝试打开网址 http://localhost:8000/rest-api/ui/tab/ 时出现以下错误

  

找不到页面404错误引发:wagtail.wagtailcore.views.serve

settings.py

DJANGO_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
]

THIRD_PARTY_APPS = [
    # rest framework
    'rest_framework',

    # third party apps
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'ckeditor',
]

MACHINA_APPS = [
    'mptt',
    'haystack',
    'widget_tweaks',
    'django_markdown',
]

LOCAL_APPS = [
    'ui_mgmt',                # UI manager - tabs, cards etc
    'faq',                    # faq
]

PUPUT_APPS = [
    'wagtail.wagtailcore',
    'wagtail.wagtailadmin',
    'wagtail.wagtaildocs',
    'wagtail.wagtailsnippets',
    'wagtail.wagtailusers',
    'wagtail.wagtailimages',
    'wagtail.wagtailembeds',
    'wagtail.wagtailsearch',
    'wagtail.wagtailsites',
    'wagtail.wagtailredirects',
    'wagtail.wagtailforms',
    'wagtail.contrib.wagtailsitemaps',
    'wagtail.contrib.wagtailroutablepage',
    'compressor',
    'taggit',
    'modelcluster',
    'puput',
]

INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + MACHINA_APPS + LOCAL_APPS + get_machina_apps() + PUPUT_APPS

urls.py

from ui_mgmt import urls as ui_mgmt_urls
urlpatterns = [
    url(r'^accounts/', include(allauth_urls)),
    url(r'^admin/', admin.site.urls),
    url(r'^forum/', include(board.urls)),
    url(r'', include('puput.urls')),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
    url(r'^rest-api/', include(ui_mgmt_urls)),
]

ui_mgmt / urls.py

url(r'^ui/tabs/$', tab_list, name='tab_list'),

ui_mgmt / views.py

@api_view(['GET','POST'])
def tab_list(request, format=None):
    if not request.user.is_authenticated():
        return Response(status=status.HTTP_401_UNAUTHORIZED)

    user = request.user
    if request.method == 'GET':
        tabs = Tab.objects.filter(belongsTo=user)
        serialized_data = ExtendedTabSerializer(tabs, many=True)
        return Response(serialized_data.data)

    elif request.method == 'POST':
        serialized_data = TabSerializer(data=request.data)
        if serialized_data.is_valid():
            serialized_data.save(belongsTo=user)
            newTab = ExtendedTabSerializer(Tab.objects.get(id=serialized_data.data['id']))
            return Response(newTab.data,status=status.HTTP_201_CREATED)

        return Response(serialized_data.errors,status=status.HTTP_400_BAD_REQUEST)

为什么我的DRF无效?每次休息时都会收到相同的错误。

1 个答案:

答案 0 :(得分:3)

更改网址模式的顺序.. puput应该(可能)最后一个元素

urlpatterns = [
  url(r'^accounts/', include(allauth_urls)),
  url(r'^admin/', admin.site.urls),
  url(r'^forum/', include(board.urls)),
  url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
  url(r'^rest-api/', include(ui_mgmt_urls)),
  url(r'', include('puput.urls')),  # it will match the rest of patterns
]

希望这有帮助