如何为Django的users应用同时配置默认认证URL与自定义URL?
Django同时关联默认认证URL与自定义用户应用URL的实现
你给出的主路由配置写法是完全可行的,Django会按照urlpatterns里的顺序依次匹配路由规则,下面是具体的配置细节和注意事项:
1. 主路由配置的逻辑说明
你写的这段代码没问题:
from django.urls import path, include urlpatterns = [ path('users/', include("django.contrib.auth.urls")), # 关联Django默认登录、登出等认证路由 path('users/', include('users.urls')), # 关联自定义用户应用的注册、资料等路由 ]
Django会优先匹配django.contrib.auth.urls里的默认认证路由,未匹配到的路径才会去匹配users.urls中的自定义路由,两者不会冲突。
默认的django.contrib.auth.urls包含以下路由:
users/login/(登录)users/logout/(登出)users/password_change/(修改密码)users/password_change/done/(修改密码完成)users/password_reset/(重置密码)users/password_reset/done/(重置密码邮件发送完成)users/reset/<uidb64>/<token>/(重置密码确认页面)users/reset/done/(重置密码完成)
2. 配置自定义用户应用的urls.py
在users应用目录下创建urls.py文件,添加你的自定义路由,示例如下:
from django.urls import path from . import views urlpatterns = [ path('register/', views.register, name='register'), # 自定义注册路由 path('profile/', views.profile, name='profile'), # 自定义个人资料路由 ]
配置完成后,访问users/register/会触发自定义注册视图,users/profile/会触发个人资料视图,和默认认证路由互不干扰。
3. 自定义登录模板的配置
默认登录视图会自动查找registration/login.html模板,如果你想把模板放在users应用的模板目录下,只需确保settings.py中TEMPLATES的APP_DIRS设为True,然后在users/templates/registration/目录下创建login.html即可,Django会自动识别该模板。
4. 自定义用户模型的配套设置
由于你使用了自定义用户模型,必须在settings.py中添加以下配置,确保Django使用你的自定义用户模型进行认证:
AUTH_USER_MODEL = 'users.你的自定义用户模型类名'
内容的提问来源于stack exchange,提问作者Ahmed Ashraf
相关产品推荐
相关产品推荐

