在网址路径中使用相同的路由

问题描述 投票:0回答:2

我正在从事一个项目,并且是Django的初学者。我将user.id从模板传递到URL有两件事,即一件用于配置文件更新,一件用于密码重置。但是无论我单击个人资料更新还是密码重置,它都只会使用一个URL。我认为问题是我不能在两个URL路径中使用相同的路由。这是我的url.py:

urlpatterns = [
path('signup', views.signup, name='signup'),
path('login', views.login, name='login'),
path('logout', views.logout, name='logout'),
path('<int:user_id>/', views.chgprofile, name='chgprofile'),
path('<int:user_id>/', views.chgpassword, name='chgpassword'),
]

这是显示两个按钮的模板代码:

<a class="btn btn-sm btn-outline-primary" href="{% url 'chgpassword' user.id %}">change password</a>
<a class="btn btn-sm btn-outline-primary" href="{% url 'chgprofile' user.id %}">update profile</a>

有什么办法解决这个问题?请帮助!

django python-3.x django-templates django-urls
2个回答
2
投票

以下两个:

path('<int:user_id>/', views.chgprofile, name='chgprofile'),
path('<int:user_id>/', views.chgpassword, name='chgpassword'),

实际上具有相同的模式,Django总是匹配找到的第一个domain/ id between [0-9]

因此,请更改URL模式,使其与众不同;

path('update-profile/<int:user_id>/', views.chgprofile, name='chgprofile'),
path('update-password/<int:user_id>/', views.chgpassword, name='chgpassword'),
© www.soinside.com 2019 - 2024. All rights reserved.