向 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,然后应该匹配我给定的路径。
为什么这不起作用?
在我的个人资料页面上,我进行了检查以确保传入的 username
与登录用户匹配(因此用户只能访问他们自己的个人资料)。我需要在 update_profile 页面上进行类似的检查,但目前没有将 username
传递到更新配置文件页面。我怎么能像 /profile/testuser/update_profile/testuser
?
谢谢。
这些是您问题的答案:
1. 您的 url 不工作,因为 users.urls
url 末尾有一个 $
. $
是一个零宽度标记,表示正则表达式的结尾。所以删除它。
2.不需要在profile_update
url处加<username>
。如果您使用 UpdateView
, then add slug_url_kwarg
属性到 UpdateView,例如:
class MyUpdateView(UpdateView):
slug_url_kwarg = "username"
如果您使用基于函数的视图,则只需使用:
def myview(request,username):
....
我有一个用户个人资料页面和一个 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,然后应该匹配我给定的路径。
为什么这不起作用?
在我的个人资料页面上,我进行了检查以确保传入的
username
与登录用户匹配(因此用户只能访问他们自己的个人资料)。我需要在 update_profile 页面上进行类似的检查,但目前没有将username
传递到更新配置文件页面。我怎么能像/profile/testuser/update_profile/testuser
?
谢谢。
这些是您问题的答案:
1. 您的 url 不工作,因为 users.urls
url 末尾有一个 $
. $
是一个零宽度标记,表示正则表达式的结尾。所以删除它。
2.不需要在profile_update
url处加<username>
。如果您使用 UpdateView
, then add slug_url_kwarg
属性到 UpdateView,例如:
class MyUpdateView(UpdateView):
slug_url_kwarg = "username"
如果您使用基于函数的视图,则只需使用:
def myview(request,username):
....