我已成功完成此操作,因此用户必须登录才能查看其个人资料,但是,我只希望用户能够查看其个人资料而无其他人。
以前,他们可以访问www.websitename.com/user/admin
以及www.websitename.com/user/test
,每次登录用户都会显示配置文件的数据。
要访问的网址是www.websitename.com/user/usernameofcurrentuser
def profile_page(request, username):
context = RequestContext(request)
if request.user == username:
if request.user.is_authenticated():
user = User.objects.get(username=username)
taskitems = request.user.taskitem_set.all()
return render_to_response('profile.html', {}, context)
else:
return render_to_response('login.html', {}, context)
else:
return render_to_response('login.html', {}, context)
但是,即使用户已登录,它也会将其重定向到登录页面。我知道用户已登录,因为它在登录页面上打印了他们的名字,但是它没有将它们重定向到与用户名相关联的配置文件。
答案 0 :(得分:1)
你可以试试这个:
def profile_page(request, username):
if request.user.is_authenticated():
if request.user.username == username:
# removed user since already in request.user and available in template as 'user'
# removed taskitems since directly available in template as 'user.taskitem_set.all'
return render(request, 'profile.html')
else:
return HttpResponseRedirect(reverse('profile_page', args=(request.user.username,)))
else:
return render(request, 'login.html')
答案 1 :(得分:0)
删除Hello <%= @order.user.name %>,
Order id #<%= @order.id %>
<%- @order.items.each do |item| %>
* <%= item.quantity %> <%= item.product.name %> (<%= number_to_currency item.total_price %>)
<%- end %>
Total: <%= number_to_currency @order.total_price %>
参数,因为每个用户只应查看自己的个人资料。您还可以使用username
装饰器删除额外的条件:
login_required
请务必在from django.contrib.auth.decorators import login_required
from django.shortcuts import render
@login_required
def profile_page(request):
return render(request, 'profile.html')
中设置LOGIN_URL
,以便将未经身份验证的用户重定向到正确的位置。