如何在Django中获取用户(当前已登录)的帖子?

2024-09-29 19:28:00 发布

您现在位置:Python中文网/ 问答频道 /正文

当用户登录并转到他/她的帐户时,他们必须看到那里的旧帖子,以及他们过去上传的内容。通过比较当前登录用户在模板中的If tryif语句(请求用户)以及数据库中可用的用户。如果条件为真,则与该用户相关的所有帖子必须在我的帐户页中可见。但如果这种情况不起作用。当我删除这个条件时,它会显示所有的帖子,不管这些帖子是相关的还是由用户上传的。当我应用这个条件时,它什么也不显示,没有错误,它只显示我的导航栏,这意味着其余的代码是好的,问题是if语句。你知道吗

模板:

{% for i in userstweet %}
    {% if request.user==i.user  %}
        Username : {{i.user}}
        <br />
        {{i.datetime}}
        <br />
        <img src="{{i.image.url}}"  width=400 height=400 />
        <br />
        <br />
        {{i.tweet}}
    {% endif %}
{% endfor %}

查看:

def myaccount(request):
    return render(request, 'tweets/myaccount.html', {'userstweet': Tweets.objects.all})  

网址:

path('myaccount', views.myaccount,name='account')                   

我希望由当前登录的用户上传的帖子将显示在我的帐户页上,但它没有给出什么。你知道吗


Tags: 用户br模板内容ifrequest帐户语句
3条回答

您可以通过以下方式完成:

def myaccount(request):
    return render(request, 'tweets/myaccount.html', {'userstweet': Tweets.objects.filter(user=request.user)}) 

答案很简单:你忘记了objects.all后面的“()”

长话短说:

我会考虑另一种方法,当你有大量的tweet时,你会遇到运行时错误。你的Tweet类应该有一个指向你的user类的外键视图.py您可以获取所有用户tweet并将此查询集发送到模板,如下所示:

usertweets = Tweets.objects.filter(user=request.user)
return render(request, 'tweets/myaccount.html', {'userstweet': usertweets}) 

这样你的网站会运行得更快。希望我能帮忙

获取当前用户并查询该用户的所有tweet不是更好吗?你能做的是:

def myaccount(request):
    current_user = request.user
    # Where user is whatever foreign key you specified that relates to user.
    user_tweets = Tweets.objects.filter(user=current_user)

    return render(request, 'tweets/myaccount.html', {'userstweet': user_tweets})  

相关问题 更多 >

    热门问题