我正在尝试创建一个动态URL,以在当前用户尝试转到其个人帖子页面时将其名称添加到路径中。在个人帖子页面中,我过滤了所有帖子,并仅显示了当前用户的帖子列表。我也只想在网址中添加他的名字。而已。我尝试了很多事情,但失败了。我感觉问题在于作者引用了Django的内置用户模型。
我的代码:
url:
path('<username>/', views.personalposts, name='personalposts'),
视图:
在查看之前:
def personalposts(request, username):
items = Post.objects.filter(author=request.user)
return render(request, 'TheApp/personalposts.html', {'items':items})
我仍然想显示这样的个人帖子。它有效,但没有动态网址。
现在我将其更改为:
def personalposts(request, username):
items = Post.objects.get(author=username)
return render(request, 'TheApp/personalposts.html', {'items':items})
模型:
class Post(models.Model):
author = models.ForeignKey(User, on_delete=models.PROTECT)
#כדי שרק משתמשים רשומים יוכלו ליצור פוסט
title = models.CharField(max_length=200)
text = models.TextField()
create_date = models.DateTimeField(default=timezone.now)
post_views = models.IntegerField(default=0)
输入
items = Post.objects.get(author=username)
您检查作者字段是否与用户名相同,您可以像这样查找FK字段:
items = Post.objects.get(author__username=username)
但是请注意,如果您有多位作者使用相同的用户名,它将中断。