混合Django和DRF网址

时间:2018-04-06 15:14:54

标签: python django django-rest-framework

到目前为止,我已经使用Django Rest Framework(DRF)构建了一个REST API,可以被任何前端使用。我们称这个API为backend。 我正在尝试添加另一个共享相同模型的Django应用程序(这次是常规应用程序,即没有DRF)。我们称这个应用为webapp

但是,似乎链接到webapp的网址不可用。

这是我的urls.py:

from django.conf.urls import url, include
from django.contrib import admin
from rest_framework import routers
from rest_framework.authtoken import views as token_views
from backend import views
from webapp import views as webapp_views

router = routers.SimpleRouter()
router.register(r'users', views.UserViewSet, 'User')
router.register(r'games', views.GameViewSet, 'Game')

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^connect/', views.CustomObtainAuthToken.as_view()),
    url(r'membership_create/', views.MembershipCreate.as_view()),
    url(r'auth/connect_with_fb/', views.ConvertTokenViewWithData.as_view()),
    url(r'auth/connect_with_credentials/', views.TokenViewWithData.as_view()),
    url(r'debug/', views.UserLoginAndIdView.as_view()),
    url(r'^auth/', include('rest_framework_social_oauth2.urls'),
    url(r'^test/', webapp_views.home, name='test'), # the new view
        )

]

urlpatterns += router.urls

单一视图(来自webapp.views):

from django.http import HttpResponse
from django.shortcuts import render

def home(request):
    return HttpResponse("""
        <h1>WEBAPP !</h1>
        <p>test webapp</p>
    """)

我想知道DRF和常规Django视图是否可以如此轻松地混合,或者它是否是正确的方式。

修改

Using the URLconf defined in WMC.urls, Django tried these URL patterns, in this order:

^admin/
^connect/
membership_create/
auth/connect_with_fb/
auth/connect_with_credentials/
debug/
^auth/
^users/$ [name='User-list']
^users/(?P<pk>[^/.]+)/$ [name='User-detail']
^users/(?P<pk>[^/.]+)/games/$ [name='User-games']
^games/$ [name='Game-list']
^games/(?P<pk>[^/.]+)/$ [name='Game-detail']
The current URL, test/, didn't match any of these.

1 个答案:

答案 0 :(得分:1)

url(r'^test/', webapp_views.home, name='test')解决问题之前移动url(r'^admin/', admin.site.urls),虽然我不知道为什么。

urlpatterns = [
        url(r'^test/', webapp_views.home, name='test'),
        url(r'^admin/', admin.site.urls),
        url(r'^connect/', views.CustomObtainAuthToken.as_view()),
        url(r'^membership_create/', views.MembershipCreate.as_view()),
        url(r'^auth/connect_with_fb/', views.ConvertTokenViewWithData.as_view()),
        url(r'^auth/connect_with_credentials/', views.TokenViewWithData.as_view()),
        url(r'^debug/', views.UserLoginAndIdView.as_view()),
        url(r'^auth/', include('rest_framework_social_oauth2.urls'),

            )

    ]