【问题标题】:how to fix django admin "You don't have permission to view or edit anything."?如何修复 django 管理员“您无权查看或编辑任何内容。”?
【发布时间】:2019-10-16 12:45:12
【问题描述】:

为了自定义默认管理站点,我做了以下更改:

admin.py:

class CustomAdminSite(admin.AdminSite):

def get_urls(self):
    urls = super(CustomAdminSite, self).get_urls()
    custom_urls = [
        # re_path(r'^.*\.html', views.custom_admin_template_loader, name='custom-loader'),

        url(r'^.*\.html', self.admin_view(self.my_view), name="my-view"),
    ]
    return urls + custom_urls

def my_view(self, request):
    context = {}
    load_template = request.path.split('/')[-1]
    template = loader.get_template('admin/' + load_template)
    request.current_app = self.name
    return HttpResponse(template.render(context, request))

    apps.py:
from django.contrib.admin.apps import AdminConfig


class MyAdminConfig(AdminConfig):
    default_site = 'myproject.admin.CustomAdminSite'

settings.py:

INSTALLED_APPS = [
    'myproject.apps.MyAdminConfig',

urls.py 中没有任何变化

所以如果我访问 admin/ 它可以工作,但是如果我使用我创建的视图访问另一个模板,它会说您没有编辑任何内容的权限,如何修复它? 为了澄清为什么我使用该视图,这是因为我覆盖了默认的管理模板,现在我有一个导航栏,这意味着我需要浏览不同的 html 文件(模板)

【问题讨论】:

    标签: python django


    【解决方案1】:

    解决方案:

    我需要传递上下文 + 设置 request.current_app ,(添加到我的自定义视图中

        context = {
            **self.each_context(request),
            'title': self.index_title,
            'app_list': app_list,
        }
    
        request.current_app = self.name
    

    【讨论】:

    • 你能放一个工作代码吗?我正在尝试这样做,但尚未加载应用程序。 apps/registry.py", line 135, in check_apps_ready raise AppRegistryNotReady("Apps aren't loaded yet.") django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. 当我在已安装的应用程序'myproject.apps.MyAdminConfig', 中注册我的管理站点时,就会发生这种情况。
    猜你喜欢
    • 2016-02-06
    • 1970-01-01
    • 2020-03-24
    • 2011-04-12
    • 2011-05-22
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多