我是Python和Django的新手,但我正在开发一个多站点Django,创建于1.9
我目前正在尝试使用Django 2.0,但我不了解命名空间和URL如何工作。
以下是未更改的代码段:
/* Template */
<li><a href="{% url 'account:profile' %}">Profil {{ user.firstname.0 }}. {{ user.lastname }}</a></li>
/* Search project URLS.PY */
ACCOUNT_PATTERNS = [ url(r'^profil$', views.MyProfileFormView.as_view(), name='profile'), ]
urlpatterns = [ url(r'^gestion/', include(ACCOUNT_PATTERNS, namespace='account')), ]
以下是它如何使用1.9版本(帐户在搜索网站中映射):
/* Main project URLS.PY */
from search import urls as search_urls
urlpatterns = [
url(r'^frontend/', include(frontend_urls)),
url(r'^search/', include(search_urls)),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这是我尝试使用的2.0修改版本:
/* Main project URLS.PY */
temppatterns = [
path('admin/', admin.site.urls),
path('search/', include(search_urls)),
]
urlpatterns = temppatterns + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
但是当我去/搜索时,我得到了这个
/ search /的NoReverseMatch &#39;帐户&#39;不是注册名称空间
我相信URLConf有一些巨大的变化,但我找不到任何文档来帮助我理解为什么和为什么。
添加一些上下文:
如果你需要什么,请随时问我,我已经在这个项目上做了很多工作,但现在我不理解这一部分。
我应该重新购买所有URLConf以在主项目URLConf中包含命名空间吗?
提前感谢您帮助我理解
答案 0 :(得分:0)
由于您已添加app_name = 'search'
,因此您的account
命名空间现在嵌套在search
命名空间内。因此,在转换网址时应使用search:account:
,例如:
{% url 'search:account:profile' %}