【问题标题】:Viewing other user profile查看其他用户资料
【发布时间】: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 替换为您要链接其个人资料的实际用户。
  • 我应该用什么替换它?
  • 您是否在链接中显示用户名?你能显示完整的&lt;a href="..."&gt;...&lt;/a&gt; 代码吗?或显示您的索引视图。
  • 试试这个:{% url 'blog:profil' post.user.username %}
  • 没用 :( 它显示了这个错误“Reverse for 'profil' with arguments '('',)' and keyword arguments '{}' not found..”

标签: python django python-3.x


【解决方案1】:

在我看来,你可以在你的渲染函数中发送一个变量来查看,称之为 isHim。当登录用户是他自己时,将其设置为true,如果不是,将其设置为false。在您的视图中,使用 {{if isHim}} 检查它,然后启用/禁用编辑按钮。我用过它,它回答了。

【讨论】:

  • 你能在我的代码中显示如何做吗,请我尽快需要它
【解决方案2】:

你可以这样做:

{% if request.user.id == post.user.id %}
 # ur code {% endif %}

在模板目录中。

【讨论】:

    猜你喜欢
    • 2015-05-14
    • 1970-01-01
    • 2011-03-14
    • 2022-12-16
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    相关资源
    最近更新 更多