【发布时间】:2017-03-26 19:12:49
【问题描述】:
我希望用户点击其他用户访问他们的个人资料而不编辑他们的帖子。
这是我的个人资料视图:
def Profil(request, username):
if not request.user.is_authenticated():
return render(request, 'blog/visitor.html')
else:
u = User.objects.get(username=username)
user = request.user
posts = Post.objects.filter(user=request.user)
context = {'user': user, 'user_url':u,'posts': posts}
return render(request, 'blog/profil.html', context)
这里是我的索引视图
def IndexView(request):
if request.user.is_authenticated():
base_template_name = 'blog/base.html'
else:
base_template_name = 'blog/visitor.html'
posts = Post.objects.all()
return render(request, 'blog/index.html',
{'posts':posts, 'base_template_name':base_template_name})
(除了这个还有其他解决办法吗?)
我的 urls.py
url(r'^(?P<username>\w+)/$', views.Profil, name = 'profil'),
从 index.html 到 profile.html 的链接如下所示:
<a href="{% url 'blog:profil' user.username %}">{{post.user.username }}</a>
这个问题是当我点击链接时它传递给我正在登录的当前用户而不是我点击它的用户
以管理员身份登录并想查看 Ala 的个人资料:
当我点击它时,它会在 url 中显示:
http://127.0.0.1:8000/blog/imedadmin/ 应该是 'Ala' 而不是 'imedadmin'。
【问题讨论】:
-
您在此处的个人资料链接中使用登录用户的用户名:
{% url 'blog:profil' user.username %}。将user替换为您要链接其个人资料的实际用户。 -
我应该用什么替换它?
-
您是否在链接中显示用户名?你能显示完整的
<a href="...">...</a>代码吗?或显示您的索引视图。 -
试试这个:
{% url 'blog:profil' post.user.username %} -
没用 :( 它显示了这个错误“Reverse for 'profil' with arguments '('',)' and keyword arguments '{}' not found..”
标签: python django python-3.x