【问题标题】:How to allow only Admin (or some user) to edit the pages in Django?如何只允许管理员(或某些用户)在 Django 中编辑页面?
【发布时间】:2019-12-31 17:53:12
【问题描述】:

在Django网页中(页面可以被所有人查看),需要只允许某些人编辑该网页,其他人只能查看该网页。

在 Django-admin 页面的用户表中,我已将某些用户更改为“可以查看”选项,并添加了某些用户“可以编辑”选项。它没有按预期工作。

供参考:

收到此错误,


POST "/admin/auth/user/4/change/ HTTP/1.1" 302

实际结果是

 POST "/admin/auth/user/4/change/ HTTP/1.1" 200

而且那个改变结果需要成功改变并反映

【问题讨论】:

  • 什么意思是“添加某些用户”可以编辑“选项”?你的意思是“可以改变”?您没有看到错误,您看到的是重定向 (302),如果您告诉我们您在浏览器中看到的内容(您被重定向到哪个页面)会有所帮助
  • 是的,我的意思是“可以改变”,它被重定向到用户主页,即“localhost:8000/admin/auth/user
  • 所以对User 模型具有“可以更改”权限的用户无法打开特定User 的/change/ 页面,而是被重定向到用户列表?
  • 不,现在我的问题是任何用户都可以查看、更改、添加和删除网页中的内容。但是我想通过更改用户权限将视图访问权限限制为少数人和少数人通过“可以更改”来更改内容
  • 这应该只是工作,假设你给予正确的权限。在上面的示例中,您正在为 TaskManager 模型设置权限,但在 URL 中,您显示了 User 模型的 URL。这些不相关。

标签: django python-3.x django-admin


【解决方案1】:

views.py

from django.views.generic.edit import UpdateView
from myapp.models import Author

class AuthorUpdate(UpdateView):
    model = Author
    fields = ['name']
    template_name_suffix = '_update_form'

app/author_update_form.html

{% if request.user.is_authenticated and request.user.is_admin %}
<form method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Update">
</form>
{% else %}
<p>Display data</p>
{% endif %}

【讨论】:

  • Aurthor 模型中有哪些字段。
  • @gomathisubramanian 他们可以是你想要的任何东西。在您的views.py 中,只需列出您希望在模板中列出的字段即可。
猜你喜欢
  • 2023-04-04
  • 2015-01-01
  • 2021-06-19
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 2014-04-26
  • 2011-06-20
  • 1970-01-01
相关资源
最近更新 更多