Django新手求助:配置/user-auth/register/路径的URL问题
解决Django URL配置问题,实现/user-auth/register/路径
嘿,别担心,我来帮你搞定这个URL配置问题!要实现http://localhost:8000/user-auth/register/这个路径,只需要对主项目和应用的urls.py做两处简单修改就行:
第一步:修改user_auth应用的urls.py
你当前应用里的URL规则url(r'^register$', views.register)匹配的是不带尾斜杠的register,而我们需要的是带尾斜杠的register/。另外,Django 2.0+推荐使用更简洁的path(不用写正则),所以可以把应用的urls.py改成这样:
from django.urls import path from . import views urlpatterns = [ path('register/', views.register, name='register'), ]
如果你坚持想用旧的url(正则方式),也可以把正则调整为r'^register/$',确保匹配尾斜杠:
from django.conf.urls import url from . import views urlpatterns = [ url(r'^register/$', views.register), ]
第二步:在主项目urls.py中注册user-auth路径
现在需要把user-auth/前缀和你的user_auth应用关联起来。打开主项目的urls.py,添加一条path规则:
from django.conf.urls import include from django.contrib import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), path('polls/', include('polls.urls')), # 保留你原来的polls条目 path('user-auth/', include('user_auth.urls')), # 新增这一行! ]
为什么这样配置?
- 主项目的
path('user-auth/', include('user_auth.urls'))会把所有以user-auth/开头的请求转发给user_auth应用的URL配置。 - 应用里的
path('register/', ...)会匹配user-auth/后面的register/部分,两者组合起来就是你想要的user-auth/register/路径啦。
另外提一句:Django默认开启了APPEND_SLASH设置(在settings.py里),如果用户访问不带尾斜杠的user-auth/register,Django会自动重定向到带斜杠的版本,但我们直接配置正确的路径更规范哦。
内容的提问来源于stack exchange,提问作者hue pham
相关产品推荐
相关产品推荐

