如何在Django的request.GET中获取用户名

0 投票
1 回答
612 浏览
提问于 2025-04-18 06:30

我正在跟着一个教程学习如何在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:
    ....

撰写回答