我想用命名空间管理一个单独的urls.py。
conf/
urls.py (1)
common/
urls.py (2)
(1)是由Django安装的系统级urls.py,我创建了(2)其中包含索引页和" accounts"认证页面。
(1)urls.py包含带命名空间的common.url" common"
url(r'^', include('common.urls', namespace='common')),
(2)urls.py声明如下:
url(r'^accounts/', include('django.contrib.auth.urls')),
url(r'^accounts/register/$', UserCreateView.as_view(), name='register'),
url(r'^accounts/register/done/$', UserCreateDoneTemplateView.as_view(), name='register_done'),
以下网址被Django正确反转。
{% url 'common:login' %}
{% url 'common:logout' %}
{% url 'common:password_change' %}
{% url 'common:register' %}
然而,"常见:password_change_done"没有逆转,我遇到了#34; NoReverseMatch"错误。
当然,url声明放在系统范围的urls.py(1)中。我只是想知道是否可以将其拆分为单独的应用程序(2)。
谢谢。
答案 0 :(得分:1)
我认为由于英语不好,我的问题和答案含糊不清,令人困惑。
首先,我想用" / account"像这样的前缀:
/accounts/register
/accounts/login
/accounts/logout
我想重用' django.contrib.auth.urls'使用名称空间如' common'或者'帐户单独管理网址'
但是,以下视图的成功网址是硬编码的。这意味着我们必须遵循他们的规则命名约定。
PasswordChangeView
PasswordResetView
PasswordResetConfirmView
例如,在" PasswordChangeView"实施如下:
class PasswordChangeView(PasswordContextMixin, FormView):
form_class = PasswordChangeForm
success_url = reverse_lazy('password_change_done')
template_name = 'registration/password_change_form.html'
title = _('Password change')
... omitted ...
因此,我决定不包括' django.contrib.auth.urls',我自己宣布了网址模式。
我想定义继承类" PasswordChangeView",但我知道Django支持传递成员视野类。
url(
r'^password_change/$',
PasswordChangeView.as_view(success_url=reverse_lazy('account:password_change_done')),
name='password_change'
),
现在,我没有看到反向错误。
我希望我的问题/答案对其他人有帮助。谢谢。