【问题标题】:How can I enable the users delete and edit the objects they create in Django?如何让用户删除和编辑他们在 Django 中创建的对象?
【发布时间】:2016-03-02 12:25:42
【问题描述】:

现在我有一个名为 lyric 的模型。具体如下:

class Lyric(models.Model):
    title = models.CharField(max_length = 200)
    body = models.CharField(max_length = 12000)
    pub_date = models.DateTimeField('date published')
    user = models.OneToOneField(User)

我有一个用户可以创建歌词的表单。接下来我要让用户可以编辑和删除歌词。现在我已经实现了编辑的形式和删除的功能。但是我怎样才能限制权限呢?提前谢谢!!!

【问题讨论】:

  • 只需比较 request.userlyric.user - 如果它们相同,则 Lyric 属于用户。
  • @henrikstroem 谢谢大家!我基本上知道后端的逻辑。但是我怎么能,比如说只有创作者可以在他们自己的页面上看到编辑和删除按钮呢?非常感谢!
  • @yobichi 在您的模板中,将按钮放在 if 结构中检查用户。
  • @henrikstroem 我现在在模板上成功了。但是我应该把比较放在哪里?视图.py 或模型.py?谢谢!

标签: python django python-3.x web


【解决方案1】:

这里有一个快速提示。在您看来,您可以这样做:

if request.user == lyric.user:
    lyric.delete() # or save edits
else:
    raise PermissionDenied # import it from django.core.exceptions

在您的模板中,您可以使用request.user 或简单的user 访问登录用户:

{% if request.user == lyric.user %}
    <a href="/link/to/view/">Delete</a>
{% endif %}

【讨论】:

  • 谢谢!谢谢!谢谢!所以现在我知道了一个名为 PermissionDenied 的魔法 :) 但实际上我想学习权限的使用.....
猜你喜欢
  • 1970-01-01
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 2020-05-19
  • 2010-09-23
相关资源
最近更新 更多