我在我的项目built-in auth tools和django-registration
中使用我的登出模板位于:
/accounts/templates/registration/logout.html
如果urls.py看起来像:
urlpatterns = [
...
url(regex = r'^accounts/', view = include('registration.backends.hmac.urls')),
url(regex = r'^accounts/', view = include('django.contrib.auth.urls')),
...
]
它使用我的模板。没关系。
但是,如果我重新组织网址:
urlpatterns = [
...
url(regex = r'^accounts/', view = include('django.contrib.auth.urls')),
url(regex = r'^accounts/', view = include('registration.backends.hmac.urls')),
...
]
它使用内置的管理员注销模板。
为什么会这样?
在their tutorial我看到他们说'registration.backends.hmac.urls':
该URLconf还设置了django.contrib.auth的视图(登录, 注销,密码重置等),虽然你想要那些视图 不同的位置,你可以包含()URLconf registration.auth_urls只放置django.contrib.auth视图 您的网址层次结构中的特定位置。
但是当我打开它时,它似乎与auth urls / views无关: 编辑:好的,现在我明白了。
"""
URLconf for registration and activation, using django-registration's
HMAC activation workflow.
"""
from django.conf.urls import include, url
from django.views.generic.base import TemplateView
from .views import ActivationView, RegistrationView
urlpatterns = [
url(r'^activate/complete/$',
TemplateView.as_view(
template_name='registration/activation_complete.html'
),
name='registration_activation_complete'),
# The activation key can make use of any character from the
# URL-safe base64 alphabet, plus the colon as a separator.
url(r'^activate/(?P<activation_key>[-:\w]+)/$',
ActivationView.as_view(),
name='registration_activate'),
url(r'^register/$',
RegistrationView.as_view(),
name='registration_register'),
url(r'^register/complete/$',
TemplateView.as_view(
template_name='registration/registration_complete.html'
),
name='registration_complete'),
url(r'^register/closed/$',
TemplateView.as_view(
template_name='registration/registration_closed.html'
),
name='registration_disallowed'),
url(r'', include('registration.auth_urls')),
答案 0 :(得分:0)
registration.backends.hmac.urls
中的last url pattern包含registration.auth_urls
,其中提供了登录,注销等网址。
url(r'', include('registration.auth_urls')),
如果您在hmac网址上方添加django.contrib.auth.urls
,则会使用django.contrib.auth
的注销视图。此视图uses a different template,registration/logged_out.html
。由于您没有覆盖此内容,因此会使用管理员模板。
答案 1 :(得分:0)
将网址映射到视图的django url dipatcher按照从头到尾的顺序检查网址:
Django按顺序遍历每个URL模式,并在第一个时停止 一个与请求的URL匹配的。
因此,类似网址的顺序决定了哪个网址匹配。即第一个匹配。