【发布时间】:2020-06-30 07:00:39
【问题描述】:
我正在用 Django 制作一个简单的 webapp。用户可以拥有个人资料,并在该个人资料下创建博客文章。
例如:
"path('profile/<int:pk>/',profile, name='profile')"
返回网址
"http://127.0.0.1:8000/profile/1/"
然后,用户可以编写在 URL 中具有名称的博客文章
例子:
path('profile/<int:pk>/blog/<str:name>',Blogs, name='Blogs'),
返回网址
"http://127.0.0.1:8000/profile/1/blog/HelloWOrld"
但是,如果两个不同的用户都将他们的博客命名为相同的确切名称,我会收到“MultipleObjectsReturned”错误。
我认为通过让用户在 URL 中更早地进行 PK 可以确保它是唯一的,即使两个博客被称为完全相同的东西。
Views.py
def Blog(request, pk, name):
blog = Restaurant.objects.get(name=name)
user = CustomUser.objects.get(pk=pk)
if not user.id == request.user.pk:
raise PermissionDenied()
else:
context = {
'user': user,
'blog': blog,
}
return render(request, 'blog/blogs.html',context)
有没有什么方法可以在不使用博客的 PK 的情况下解决这个问题? 如果有人能解释为什么我的逻辑是错误的,而且它一开始就不起作用。
谢谢。
【问题讨论】:
-
显示您如何过滤的代码
-
@shafik,我已经编辑了问题以包含视图,py