如何使用 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 /我得到一个错误
UPDATE
当我去localhost:8000 / scrumboard / api时效果很好
UPDATE
UPDATE
添加了项目urls.py代码
2 回答
我们怎么期望
/scrumboard/
匹配第一个正则表达式?是否有一个外部urls.py
文件,其中包含您提到的文件?在没有更多信息的情况下,这是否有效?
我只是想删除这个问题,但我想也许其他人会反对这个并决定描述问题到底是什么 .
由于经验不足,我在错误的地方寻找问题 .
通过关注主页模板上的链接:
我们运行了一个在view.py中定义的函数,该函数接受此请求并在
scrumboard/index.html
下呈现模板这里飞错了 .
我使用了django Reversing namespaced URLs,因为我有几个应用程序,每个应用程序都有自己的index.html模板 . 我不得不猜测问题出在这个模板的某个地方:
看到这些问题,我认为问题可能在于:
我决定只评论他们 . 在认为问题解决之后,我重新加载了页面,但错误仍然再次出现 .
但是django忽略了通常的html注释并尝试阅读注释代码 . 所以我的错误没有消失,我开始在其他地方寻找问题 . 由于缺乏经验,我问了一个不正确的问题 . Just deleting this lines solve my problem.