【发布时间】:2018-04-26 13:44:17
【问题描述】:
如何使用app_name = 'scrumboard' 将 django urlpatterns 与 DRF 路由器结合在一起?我尝试了DRF documentation 中的所有方法,但仍然无法解决此问题。到目前为止,我有以下 urls.py 文件:
#scrumboard/urls.py
from rest_framework.routers import DefaultRouter
from .api import ListViewSet, CardViewSet
from django.urls import re_path, path, include
from . import views
router = DefaultRouter()
router.register(r'lists', ListViewSet)
router.register(r'cards', CardViewSet)
app_name = 'scrumboard'
urlpatterns = [
path('', views.index, name="index"),
re_path(r'^api/', include((router.urls))),
]
这是我的项目 urls.py:
#project/urls.py
from django.contrib import admin
from django.urls import include, path, re_path
#Add URL maps to redirect the test URL to our application
from django.views.generic import RedirectView
# Use static() to add url mapping to serve static files during development (only)
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('', include('home.urls')),
path('admin/', admin.site.urls),
path('accounts/', include('django.contrib.auth.urls')),
path('test/', RedirectView.as_view(url='/catalog/', permanent=True)),
path('polls/', include('polls.urls')),
path('blog/', include('blog.urls')),
path('catalog/', include('catalog.urls')),
path('scrumboard/', include('scrumboard.urls'))
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
在我的模板中,我将有机会像这样定义动态 url:
<li><a href="{% url 'scrumboard:index' %}">Scrumboard</a></li>
这将带我进入我的 Scrumboard 应用程序。
当我转到这个 url localhost:8000/scrumboard/ 时,使用上面的代码,我得到一个错误
更新
当我转到 localhost:8000/scrumboard/api 时,它运行良好
更新
更新
添加项目 urls.py 代码
【问题讨论】:
-
/scrumboard/是否应该触发index视图? -
您是否尝试在常规视图路径之前放置路由器路由,并且 urlpath
re_path(r'^', include((router.urls))),为空? -
是的。我已经定义了在 scrumboard/index.html 下呈现模板的索引函数
标签: django django-rest-framework