如何将变量(用户名)从URL传递给视图?

时间:2015-01-17 23:50:09

标签: django views

我对如何从网址中提取用户名感到困惑。以下是我的观点。

视图

def profile_listview(request, username,
    template_name=userena_settings.USERENA_PROFILE_DETAIL_TEMPLATE,
    extra_context=None, **kwargs):
    user = get_object_or_404(get_user_model(),
                             username__iexact=username)
    fullsalelist = Entry.objects.filter(author__username__iexact=username)
    userreviews = UserReview.objects.filter(name__username__iexact=username).order_by('-pub_date')

    if username == request.user.username:
        print request.user.username
        print username
        pageowner=True
        print "true"

URL

(r'^accounts/(?P<username>[\@\.\w-]+)/listview/$', profile_listview),

fullsalelist和userreviews都是按用户名过滤对象,这是URL中的用户名(不是当前登录的用户)

但是,在下面的示例中,两个打印语句都打印相同的内容(它不应该因为我使用一个用户登录并查看另一个用户的配置文件)

if username==request.user.username:
    print request.user.username  \\prints benjamin
    print username    \\prints benjamin, but I want it to print steve which is the username in the current profile URL
    pageowner=True

request.user.username和username打印相同的内容,即当前登录的用户而不是URL中的用户名。我很困惑为什么下面的示例通过URL中的用户名正确过滤对象,但打印用户名将改为打印当前登录的用户。

fullsalelist = Entry.objects.filter(author__username__iexact=username)

这里发生了什么?

1 个答案:

答案 0 :(得分:0)

所以我想通了。

即使浏览器中的网址栏显示/ accounts / steve / listview

我的AJAX代码实际上发送了一个POST请求/ accounts / benjamin / listview

奇怪的是,无论如何这并没有对预期的功能产生负面影响,但它所做的是同时使用&#39;用户名&#39;和&#39; request.user.username&#39; =本杰明,这让我感到困惑。

发布此信息以防将来帮助其他任何人。

相关问题