我查看了正式的Django文档(https://docs.djangoproject.com/en/3.2/topics/http/urls/#reversing-namespaced-urls)和错误代码,并编写了以下代码。如何编写名称空间才能工作?
views.py:
from django.urls import path, include
app_name = 'home'
urlpatterns = [
path('math/', include('math_note.urls', namespace='math-note'))
]模板:
<a href="{% url 'home:math-note' %}">math note</a>运行runserver时出错:django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported. Set the app_name attribute in the included module, or pass a 2-tuple containing the list of patterns and app_name instead.
问:我如何使用命名空间函数?
第二个问题:
谢谢!通过<a href="{% url 'music:home-page' %}">连接良好( app_name = music)
但是当我从音乐应用程序调用表单并加载url来生成时,我会得到一个错误。其他URL没有任何问题,只有这个。
Reverse for 'home-page' not found. 'home-page' is not a valid view function or pattern name.
#音乐/urls.py
from django.urls import path
from . import views
app_name = 'music'
urlpatterns = [
path('', views.music_home_page, name='home-page'),
path('new/', views.new_song, name='new'),
path('music_player/<int:id>/', views.music_player, name='music-player'),
]问题:我解决了前面的问题,得到了以下问题。造成这种情况的原因和解决办法是什么?
发布于 2021-06-16 07:42:50
namespace kwarg是include接受的实例名称空间,即应用程序名称空间的实例,如果没有应用程序命名空间,则不可能有应用程序命名空间,正如错误所指定的那样,应用程序命名空间可以通过在包含的模块中指定app_name或将包含模式和应用程序名称空间的二元组传递给include。
因此,您需要修改math_note.urls并向其添加一个app_name变量:
app_name = 'math_note'
urlpatterns = [
...
]保留其他urls (可能在home.urls中?)其现状是:
from django.urls import path, include
app_name = 'home'
urlpatterns = [
path('math/', include('math_note.urls', namespace='math-note'))
]发布于 2021-06-16 07:37:13
只需从路径中删除命名空间即可。包含url不需要有命名空间。在你的数学笔记上有你的命名空间就足够了。
发布于 2021-06-16 07:40:56
views.py
from django.urls import path, include
app_name = 'home'
urlpatterns = [
path('math/', include('math_note.urls', name='math-note'))
]使用name而不是namespace
https://stackoverflow.com/questions/67998265
复制相似问题