Django:删除管理员用户更改表单中的“查看站点”按钮

2024-04-28 11:20:07 发布

您现在位置:Python中文网/ 问答频道 /正文

get_absolute_url()方法很酷,但在某些情况下不需要。django.contrib.auth公司.模型。用户如果默认设置,这会导致我的项目在管理中有一个断开的链接。在

我怎样才能防止这种情况发生?在

在我的一个旧项目中,我设置了一个自定义模板,在这个模板中我删除了按钮的html,但这听起来并不是一个好的解决方案。有更好的吗?在


Tags: 项目django方法用户模型auth模板url
3条回答

您可以使用JavaScript在客户端隐藏按钮,而不是monkey补丁。“查看站点”按钮的HTML如下所示:

<li><a href="/admin/r/4/2/" class="viewsitelink">View on site</a></li>

如果你只是隐藏锚定标记,你会看到一部分圆形按钮出现在li标签上。现在不幸的是,没有一种简单的方法可以使用css来选择特定的li标记,因为它没有类、名称或id。所以我们可以使用jquery,它可以让您更好地控制选择器。将以下内容放入静态文件夹。例如在static/admin/user_change位置_表格.js在

^{pr2}$

你的管理员py可能看起来像这样:

from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from django.contrib.admin import site

class CustomUserAdmin(UserAdmin):
    class Media:
        js = ['admin/user_change_form.js']

site.unregister(User)
site.register(User, CustomUserAdmin)

更新

django1.7ModelAdmin.view_on_site中添加了一个特性,它允许您不显示“在站点上查看”链接。在

从django1.7开始,每个型号都可以做到这一点。在

# myapp/admin.py
from django.contrib import admin
from myapp.models import MyModel

class MyModelAdmin(admin.ModelAdmin):
    view_on_site = False

admin.site.register(MyModel,MyModelAdmin)

如果你点击django1.7链接,网站会告诉你“它是一个不再受支持的不安全的Django版本。请升级到新版本!”在

对于django1.9,下面的解决方案可以很好地工作,正如Djangodocumentation

在myapp中/管理员py在

from django.contrib.admin import AdminSite
class MyAdminSite(AdminSite):
    # Disable View on Site link on admin page
    site_url = None

相关问题 更多 >