如何只允许管理员(或某些用户)在 Django 中编辑页面?
Posted
技术标签:
【中文标题】如何只允许管理员(或某些用户)在 Django 中编辑页面?【英文标题】:How to allow only Admin (or some user) to edit the pages in 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。这些不相关。
【参考方案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
中,只需列出您希望在模板中列出的字段即可。以上是关于如何只允许管理员(或某些用户)在 Django 中编辑页面?的主要内容,如果未能解决你的问题,请参考以下文章
如何只允许在 QTableWidget 中多次选择某些项目?