用户登录并进入其帐户后,必须看到那里的旧帖子以及他们过去上传的内容。如果尝试通过比较当前登录的用户(request.user)和数据库中可用的用户来在模板中使用if语句。如果条件为true,则与该用户相关的所有帖子都必须在我的帐户页面中可见。但这如果条件不起作用。当我删除此条件时,它将显示所有帖子,无论这些帖子与用户相关还是由用户上传。当我应用此条件时,它什么也不显示,没有错误,它仅显示我的导航栏,这意味着其余的代码很好,而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})
url:
path('myaccount', views.myaccount,name='account')
我希望当前登录用户上传的帖子会显示在我的帐户页面上,但不会显示任何内容。
答案 0 :(得分:1)
仅获取当前用户并查询该用户的所有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})
答案 1 :(得分:0)
您可以通过以下方式实现:
def myaccount(request):
return render(request, 'tweets/myaccount.html', {'userstweet': Tweets.objects.filter(user=request.user)})
答案 2 :(得分:0)
简单的答案:您在objects.all
之后忘记了“()”
长答案:
我会考虑采用另一种方法,当您拥有大量推文时,您将遇到运行时错误。您的Tweet
类在您的views.py中应该有一个user
的外键。您可以获取所有用户Tweet并将此查询集发送到模板,如下所示:
usertweets = Tweets.objects.filter(user=request.user)
return render(request, 'tweets/myaccount.html', {'userstweet': usertweets})
您的网站将以这种方式运行得更快。希望我能帮助
答案 3 :(得分:0)
删除Django模板中的request
。
例如
{% if user == i.user %}
OR
{% if user.username == i.user.username %}