在 Django 中,要获取当前用户的帖子,你需要首先确保你的模型和视图已经正确设置。以下是一个基本的示例,展示了如何实现这一功能:
假设你有一个 Post
模型,其中包含用户和帖子的信息:
from django.db import models
from django.contrib.auth.models import User
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
在视图中,你可以使用 Django 的 ORM 来过滤出当前用户的帖子。这里有一个基于函数的视图示例:
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from .models import Post
@login_required
def user_posts(request):
# 获取当前登录用户的所有帖子
posts = Post.objects.filter(author=request.user)
return render(request, 'user_posts.html', {'posts': posts})
在这个视图中,@login_required
装饰器确保只有登录用户才能访问此视图。Post.objects.filter(author=request.user)
这行代码会从数据库中筛选出 author
字段与当前请求的用户相匹配的所有帖子。
确保你的 URL 配置指向了这个视图:
from django.urls import path
from .views import user_posts
urlpatterns = [
path('user/posts/', user_posts, name='user_posts'),
]
最后,在你的模板文件 user_posts.html
中,你可以遍历这些帖子并显示它们:
{% for post in posts %}
<div>
<h2>{{ post.title }}</h2>
<p>{{ post.content }}</p>
<p>Published at: {{ post.created_at }}</p>
</div>
{% endfor %}
@login_required
装饰器会将用户重定向到登录页面。通过这种方式,你可以有效地获取并展示当前用户的帖子。如果你遇到任何具体的问题或错误,请提供更多的信息,以便进一步诊断和解决。
领取专属 10元无门槛券
手把手带您无忧上云