我有一个用户资料页和一个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,这样就应该与我给的路径相匹配。
为什么不工作?
在我的个人资料页面上,我有一个检查,以确保我的个人资料页面的 username
传递的信息与登录的用户相匹配(所以用户只能访问自己的配置文件)。我需要在update_profile页面进行类似的检查,但目前没有通过 username
到更新个人资料页面。我怎样才能执行这个检查而不像第二次那样通过 /profile/testuser/update_profile/testuser
?
谢谢你,我有一个用户资料页和一个update_profile页。
以上就是对你问题的回答。
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):
....