【发布时间】:2019-07-27 19:21:26
【问题描述】:
我希望我的网站成员能够通过 URL mysite.com/some_user 而不是 mysite.com/profiles/some_user 访问其他用户的个人资料页面,但是对于另一个 url 路径的每个请求,负责用户个人资料页面的查看功能都会被执行。
我希望 Django 在找到匹配路径时停止寻找任何其他 url 路径,这是我的根 URL 配置:
urlpatterns = [
path('feedstream/', feed_stream)),
path('<str:username>', view_profile)
]
这是负责/some_user的视图:
def view_profile(request,username):
try:
member = User.objects.get(username=username)
member_events = Feed.my_events(member)
return render(request,'profile.html',{'member_events':member_events})
except User.DoesNotExist:
print('No data')
return HttpResponse('No data')
现在,当我向其他视图发送请求时,例如 mysite.com/feedstream(这不是用户个人资料页面),尽管页面加载正确,view_profile() 也会被执行(根据服务器上的 No data 打印判断控制台)
换句话说,在 Django 文档中它声明:
"Django 依次遍历每个 URL 模式,并在第一个匹配请求的 URL 时停止"
我问为什么要在 view_profile() 之前有匹配的模式时调用它。
我在网上找不到任何指南可能是因为我不知道问题的确切关键字,我做错了什么?
【问题讨论】:
-
我不明白。您拥有
/username的 view_profile 视图。现在你想要什么? -
尽管它有效,但我不确定这是不是正确的做法,因为在另一个 url 例如
mysite.com/feedstream解析后,Django 也运行view_profile()这不是预期的行为 -
@heemayl "当我向其他视图发送请求时,例如
mysite.com/feedstream(这不是用户个人资料页面),尽管页面加载正确,view_profile()也会被执行(判断为No data在服务器控制台上打印)"