【发布时间】:2018-08-13 01:02:39
【问题描述】:
目前,我计划编写一个用户可以写博客文章的网站。我还没有开始实施,因为我是 Django 新手,想大致了解我应该如何解决问题和构建整个项目。
我的问题: 不允许用户使用 Django 的管理页面 (/admin)。用户应该只与我编写的网站互动。
我网站上的用户将能够创建博客文章。现在,我必须确保只有博文的创建者才能编辑/删除他自己的博文。所有其他用户应该只能阅读这篇文章。
所以,我需要每个用户/实例的权限。我知道有一些成熟的权限系统,比如 django-guardian,但我更愿意自己解决它。也是为了更好地理解 Django 框架。
我已经阅读了 Django 文档,但不知所措。
我想这是一个常见的问题,我也有一个通用的解决方案来解决这个问题。有人可以帮我看看我应该从哪里开始,从哪里开始?
到目前为止我的想法(请发表评论):
创建一个类似blog/5/edit 的页面,该页面仅供创建博客帖子编号5 的用户访问。这应该很容易在视图函数中,对吧?在这个页面上有一个表单来编辑博客文章。
类似这样的视图(伪代码!)
if request.user != blogpost.user:
redirect/error page
else:
show Form/process Form
这安全吗?到目前为止,我在搜索互联网时还没有找到这样的解决方案。然而,作为一个 Django 初学者,我自发地认为这已经足够了。
【问题讨论】:
-
是的,没问题。
-
您可以将装饰器用于“您的想法”,然后您可以将装饰器应用于您需要权限的视图函数。您可以看到相同 docs.djangoproject.com/en/2.0/_modules/django/contrib/auth/… 的现有装饰器实现