命名空间和URL多站点

时间:2018-01-22 14:50:47

标签: python django django-urls

我是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有一些巨大的变化,但我找不到任何文档来帮助我理解为什么和为什么。

添加一些上下文:

  • 我无法访问旧服务器
  • 帐户在搜索中。搜索是一个子站点。
  • 如果我理解正确,如果我们在主项目中包含conf,我们应该可以在alt站点URLConf上使用命名空间,但这不是这里的情况

如果你需要什么,请随时问我,我已经在这个项目上做了很多工作,但现在我不理解这一部分。

我应该重新购买所有URLConf以在主项目URLConf中包含命名空间吗?

提前感谢您帮助我理解

1 个答案:

答案 0 :(得分:0)

由于您已添加app_name = 'search',因此您的account命名空间现在嵌套在search命名空间内。因此,在转换网址时应使用search:account:,例如:

{% url 'search:account:profile' %}