在URL路径中添加参数后出现404错误。

问题描述 投票:1回答:1

我有一个用户资料页和一个update_profile页。

我的项目urls.py。

re_path(r'^profile/(?P<username>[\w-]+)/$', include('users.urls')),

我的 users.urls:

path('', views.profile, name='profile'),
path('update_profile', views.update_profile, name='update_profile'),

在添加用户名参数之前,这两个链接都是正常的。自从添加了用户名参数后,我可以访问个人资料页面,但 update_profile 页面却抛出了一个 404 错误。我的理解是,如果地址栏读作 www.site/profile/testuser/update_profile 项目中的urls.py将剥离 www.site/profile/testuser/ 而过 update_profile 到profile apps urls.py,这样就应该与我给的路径相匹配。

  1. 为什么不工作?

  2. 在我的个人资料页面上,我有一个检查,以确保我的个人资料页面的 username 传递的信息与登录的用户相匹配(所以用户只能访问自己的配置文件)。我需要在update_profile页面进行类似的检查,但目前没有通过 username 到更新个人资料页面。我怎样才能执行这个检查而不像第二次那样通过 /profile/testuser/update_profile/testuser?

谢谢你,我有一个用户资料页和一个update_profile页。

django django-urls
1个回答
0
投票

以上就是对你问题的回答。

1. 你的url不工作是因为有一个 $ 到了 users.urls url.是一个零宽度的标记,表示在regex中结束。$ 是一个零宽度的标记,意味着在regex中结束。所以将其删除。

2. 你不需要添加 <username>profile_update url。如果您使用的是 UpdateView,然后加上 slug_url_kwarg 属性到UpdateView,比如。

class MyUpdateView(UpdateView):
   slug_url_kwarg = "username"

如果你使用的是基于函数的视图,那么只要使用:

def myview(request,username):
    ....
© www.soinside.com 2019 - 2024. All rights reserved.