向 URL 路径添加参数后出现 404 错误

404 Error After Adding Argument To URL Path

我有一个用户个人资料页面和一个 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'),

在将用户名参数添加到 url 之前,这两个链接都有效。由于添加了用户名参数,我可以访问个人资料页面,但 update_profile 页面抛出 404 错误。我的理解是,如果地址栏显示 www.site/profile/testuser/update_profile,项目 urls.py 将删除 www.site/profile/testuser/ 并仅将 update_profile 传递给配置文件应用程序 urls.py,然后应该匹配我给定的路径。

  1. 为什么这不起作用?

  2. 在我的个人资料页面上,我进行了检查以确保传入的 username 与登录用户匹配(因此用户只能访问他们自己的个人资料)。我需要在 update_profile 页面上进行类似的检查,但目前没有将 username 传递到更新配置文件页面。我怎么能像 /profile/testuser/update_profile/testuser?

谢谢。

这些是您问题的答案:

1. 您的 url 不工作,因为 users.urls url 末尾有一个 $ . $ 是一个零宽度标记,表示正则表达式的结尾。所以删除它。

2.不需要在profile_updateurl处加<username>。如果您使用 UpdateView, then add slug_url_kwarg 属性到 UpdateView,例如:

class MyUpdateView(UpdateView):
   slug_url_kwarg = "username"

如果您使用基于函数的视图,则只需使用:

def myview(request,username):
    ....