如果您想打印当前用户的用户名(如果他是经过身份验证的用户),您可以返回数据库中的所有用户或只返回经过身份验证的用户,请使用以下代码:
{% if request.user.is_authenticated %}
<select name="users" id="users">
<option >{{ request.user.username }}</option>
</select>
{% endif %}
如果您需要打印当前用户的用户名,只需使用 request.user.username 但是..
如果您想从当前用户创建的 db (model) 中选择任何内容,例如当前用户创建的帖子可以通过以下方式进行:
在model.py文件中。
from django.db import models
from django.contrib.auth.models import User
class PostModel(models.Model):
user= models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=250)
text = models.CharField(max_length=5000)
在 veiws.py 中
from .modal import PostModel
from django.shortcuts import render
def home_view(request):
if request.user.is_authenticated:
posts = PostModel.objects.filter(user=request.user)
return render(request, 'index.html', {'posts': posts})
else:
#you can return anything instead of redirect the user to login page
# if the user not authenticated
return render(request, 'login.html', {})
在 index.html 中
{% for item in posts %}
<div class='post-container' >
<div class='user'> {item.user.first_name }</div>
<div class='title'> {item.title}</div>
<div class='text'> {item.text}</div>
</div>
{% endfor %}
用户过滤方法以获取具有特定参数的任何内容,例如
posts = PostModel.objects.filter(user__id=1)
posts = PostModel.objects.filter(title='my post')
users = User.objects.filter(first_name='first name')
等等。阅读文档中的过滤器功能:
https://docs.djangoproject.com/en/4.0/ref/models/querysets/#filter