如何在Django的request.GET中获取用户名
我正在跟着一个教程学习如何在Django中添加好友:构建好友网络
我遇到了404页面错误,因为我在代码中设置了,如果在请求中找不到用户名,就会抛出Http404错误:
views.py:
def friend_add(request):
if 'username' in request.GET:
friend = get_object_or_404(User, username=request.GET['username'])
friendship = Friendship(from_friend=request.user, to_friend=friend)
friendship.save()
return HttpResponseRedirect('/friends/%s' % request.user.username)
else:
raise Http404
urls.py:
url(r'^friend/add/(?P<username>\w+)$', photo.views.friends_request),
url(r'^friends/(?P<username>\w+)$', photo.views.friends),
url(r'^request_sent/$', photo.views.friend_add),
我在使用模板标签,像教程中展示的那样:
{% ifequal user.username abuild.user %}
<a href="/builds/friends/{{ user.username }}">view your friends</a>
{% else %}
{% if is_friend %}
<a href="/builds/friends/{{ abuild.user }}">
{{ abuild.user }} is a friend of yours</a>
{% else %}
<a href="/builds/request_sent/">
add {{ abuild.user}} to your friends</a>
{% endif %}
- <a href="/builds/friends/{{ abuild.user }}">
view {{abuild.user}}'s friends</a>
{% endifequal %}
我该如何确保在点击链接跳转到/request_sent/
时能获取到用户名呢?
abuild.user
是我想添加的用户,而user.username
是当前登录的用户。
1 个回答
1
你应该像其他情况一样,把用户名放在网址里。
所以你的模板需要改成
<a href="/builds/request_sent/{{abuild.user.username}}">
urls.py 文件也要改成
url(r'^request_sent/(?P<username>\w+)$', photo.views.friend_add),
然后视图(view)也要改成
def friend_add(request, username):
if 'username' in request.GET:
....