我有一个基于 django 框架的演示产品,并且正在实时运行。潜在客户将以超级用户访问权限登录 UI。我想显示删除选项,但是当他们执行删除选项时,我想显示“不允许演示登录”之类的消息。
有没有办法在 django 框架中快速实现这一点。这样做的最佳选择是什么。
谢谢湿婆
我有一个基于 django 框架的演示产品,并且正在实时运行。潜在客户将以超级用户访问权限登录 UI。我想显示删除选项,但是当他们执行删除选项时,我想显示“不允许演示登录”之类的消息。
有没有办法在 django 框架中快速实现这一点。这样做的最佳选择是什么。
谢谢湿婆
我通过创建一个演示用户并将以下代码添加到中间件类来解决此问题:
if request.user.username == 'demo':
if '/delete' in path:
request.user.message_set.create(message='Delete/Edit option is disabled for demo account.')
return HttpResponseRedirect("../../")
if path.startswith ('/admin/') and request.method == 'POST' and request.POST.has_key('action'):
axnname = request.POST.get('action')
if axnname == 'delete_selected':
request.user.message_set.create(message='Delete/Edit option is disabled for demo account.')
return HttpResponseRedirect(path)
if path.startswith ('/admin/') and request.method == 'POST' and request.is_ajax() is False:
request.user.message_set.create(message='Add/Edit option is disabled for demo account.')
return HttpResponseRedirect("../")
我会创建一个员工用户,绝对不是超级用户。这将使您能够利用 Django 的内置权限,这在您的情况下似乎很方便。
创建一个有权添加和编辑演示模型的用户,而不是删除。
通过ModelAdmin将 JS 文件添加到您的 change_form中,或添加自定义视图
class DemoModelAdmin(admin.ModelAdmin):
class Media:
js = (
'/static/js/mimic_delete.js',
)
admin.site.register(DemoModel, DemoModelAdmin)
在您的mimic_delete.js 文件中,您可以添加一个jQuery 循环,为DemoModel 更改表单的results_list 中的每一行添加一个删除按钮,并添加一个隐藏事件onclick 或任何您想要的表示形式。
另一种方法可能是将模型条目绑定到会话并覆盖 ModelAdmin 的 get_queryset 以过滤用户在当前会话中创建的条目,并在会话过期后清理它们。