如何修复django管理员“您无权查看或编辑任何内容。”?

时间:2019-05-30 20:44:13

标签: python django

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

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文件(模板)

1 个答案:

答案 0 :(得分:0)

解决方案:经过django.contrib.admin中的整个代码后,我发现了(由于不再使用谷歌搜索和文档记录,这使我花费了令人难以置信的小时数)。

我需要传递上下文+设置request.current_app,我仍然不确定它的工作方式NOR为什么我必须这样做,因为有关此问题的文档很糟糕。无论如何,以下是我为其添加的代码:(在我的自定义视图中添加

File "main.py", line 6, in test_init
    client = Dog(f)
TypeError: __init__(): incompatible constructor arguments. The following argument types are supported:
    1. pywrapper.Dog(arg0: _IO_FILE)

Invoked with: <_io.TextIOWrapper name='test.log' mode='w' encoding='UTF-8'>