命名空间和 URL 多站点
Namespace and URLs Multi-site
我是 Python 和 Django 的新手,但我正在开发基于 1.9
创建的多站点 Django
我目前正在尝试使其与 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 at /search/
'account' is not a registered namespace
我相信 URLConf 有一些巨大的变化,但我找不到任何文档来帮助我理解是什么以及为什么。
添加一些上下文:
- 我无法访问旧服务器
- 帐户正在搜索中。搜索是一个子站点。
- 如果我理解正确,如果我们在主项目中包含 conf,我们应该能够在 alt 站点 URLConf 上使用命名空间,但这里不是这样
如果你需要什么,尽管问我,我已经在这个项目上做了很多工作,但现在我只是不明白这部分。
我是否应该重新购买所有 URLConf 以将命名空间包含在主项目 URLConf 中?
在此先感谢您帮助我理解
由于您添加了 app_name = 'search'
,您的 account
命名空间现在嵌套在 search
命名空间中。因此在反向 URL 时应该使用 search:account:
,例如:
{% url 'search:account:profile' %}
我是 Python 和 Django 的新手,但我正在开发基于 1.9
创建的多站点 Django我目前正在尝试使其与 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 at /search/
'account' is not a registered namespace
我相信 URLConf 有一些巨大的变化,但我找不到任何文档来帮助我理解是什么以及为什么。
添加一些上下文:
- 我无法访问旧服务器
- 帐户正在搜索中。搜索是一个子站点。
- 如果我理解正确,如果我们在主项目中包含 conf,我们应该能够在 alt 站点 URLConf 上使用命名空间,但这里不是这样
如果你需要什么,尽管问我,我已经在这个项目上做了很多工作,但现在我只是不明白这部分。
我是否应该重新购买所有 URLConf 以将命名空间包含在主项目 URLConf 中?
在此先感谢您帮助我理解
由于您添加了 app_name = 'search'
,您的 account
命名空间现在嵌套在 search
命名空间中。因此在反向 URL 时应该使用 search:account:
,例如:
{% url 'search:account:profile' %}