我对如何从网址中提取用户名感到困惑。以下是我的观点。
视图
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)
这里发生了什么?
答案 0 :(得分:0)
所以我想通了。
即使浏览器中的网址栏显示/ accounts / steve / listview
我的AJAX代码实际上发送了一个POST请求/ accounts / benjamin / listview
奇怪的是,无论如何这并没有对预期的功能产生负面影响,但它所做的是同时使用&#39;用户名&#39;和&#39; request.user.username&#39; =本杰明,这让我感到困惑。
发布此信息以防将来帮助其他任何人。