【发布时间】:2023-03-21 23:29:01
【问题描述】:
我对 Python 和 Django 很陌生,但我正在开发一个多站点 Django,创建于 1.9
我目前正在尝试使其与 Django 2.0 一起使用,但我不明白命名空间和 URL 的工作原理。
这是没有改变的sn-p:
/* 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 在 /search/
'account' 不是注册的命名空间
我确实相信 URLConf 发生了一些巨大的变化,但我找不到任何文档来帮助我理解内容和原因。
添加一些上下文:
- 我没有旧服务器的访问权限
- 帐户正在搜索中。搜索是一个子网站。
- 如果我理解正确,如果我们在主项目中包含 conf,我们应该能够在 alt 站点 URLConf 上使用命名空间,但这里不是这样
如果您需要任何东西,请随时问我,我已经在这个项目上做了很多工作,但现在我只是不明白这部分。
我应该重新购买所有 URLConf 以将命名空间包含在主项目 URLConf 中吗?
提前感谢您帮助我理解
【问题讨论】:
-
/* search projects did not change */表示/* search project URLS.PY */下没有任何变化?请包括所有相关代码sn-ps。 -
就是这样。我进行了编辑以使其更具可读性,但总共有 200 行。所以我可以添加更多东西,但我想保持消化。感谢您的 cmets 寿,不要犹豫,问更多的东西
-
请注意,您不必在 Django 2.0 中使用
path()-url()仍然可以使用。如果您尽可能少地进行更改,直到您可以正常工作,升级会更简单。 -
感谢@Alasdair,这是真的,
re_path()也是如此,我只是在测试它,看看它是否可以改变任何东西。但不是。 :// -
您的
search/urls.py是否设置了app_name?
标签: python django django-urls