首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >之后如何在django +问题中使用命名空间

之后如何在django +问题中使用命名空间
EN

Stack Overflow用户
提问于 2021-06-16 07:32:45
回答 5查看 517关注 0票数 1

我查看了正式的Django文档(https://docs.djangoproject.com/en/3.2/topics/http/urls/#reversing-namespaced-urls)和错误代码,并编写了以下代码。如何编写名称空间才能工作?

views.py:

代码语言:javascript
复制
from django.urls import path, include

app_name = 'home'
urlpatterns = [
    path('math/', include('math_note.urls', namespace='math-note'))
]

模板:

代码语言:javascript
复制
<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

代码语言:javascript
复制
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'),
]

问题:我解决了前面的问题,得到了以下问题。造成这种情况的原因和解决办法是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2021-06-16 07:42:50

namespace kwarg是include接受的实例名称空间,即应用程序名称空间的实例,如果没有应用程序命名空间,则不可能有应用程序命名空间,正如错误所指定的那样,应用程序命名空间可以通过在包含的模块中指定app_name或将包含模式和应用程序名称空间的二元组传递给include

因此,您需要修改math_note.urls并向其添加一个app_name变量:

代码语言:javascript
复制
app_name = 'math_note'

urlpatterns = [
    ...
]

保留其他urls (可能在home.urls中?)其现状是:

代码语言:javascript
复制
from django.urls import path, include

app_name = 'home'
urlpatterns = [
    path('math/', include('math_note.urls', namespace='math-note'))
]
票数 0
EN

Stack Overflow用户

发布于 2021-06-16 07:37:13

只需从路径中删除命名空间即可。包含url不需要有命名空间。在你的数学笔记上有你的命名空间就足够了。

票数 0
EN

Stack Overflow用户

发布于 2021-06-16 07:40:56

views.py

代码语言:javascript
复制
from django.urls import path, include

app_name = 'home'
urlpatterns = [
    path('math/', include('math_note.urls', name='math-note'))
]

使用name而不是namespace

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67998265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档