Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django cms“;您没有添加插件的权限";作为超级用户_Python_Django_Content Management System_Django Cms - Fatal编程技术网

Python django cms“;您没有添加插件的权限";作为超级用户

Python django cms“;您没有添加插件的权限";作为超级用户,python,django,content-management-system,django-cms,Python,Django,Content Management System,Django Cms,我在现有django 1.7/Python 2.7项目的基础上安装了django cms 3.0.6(今天的最新版本),其中sqlite3作为数据库 创建了一个简单的模板和占位符后,我在尝试使用前端内容编辑器(例如“Generic/Picture”插件)添加插件时出错。这是我的模板文件: {% extends "base.html" %} {% load cms_tags %} {% block content %} {%

我在现有django 1.7/Python 2.7项目的基础上安装了django cms 3.0.6(今天的最新版本),其中sqlite3作为数据库

创建了一个简单的模板和占位符后,我在尝试使用前端内容编辑器(例如“Generic/Picture”插件)添加插件时出错。这是我的模板文件:

{% extends "base.html" %}      
{% load cms_tags %}            


{% block content %}            
    {% placeholder template1_content %}
{% endblock %}  
即使我以超级用户身份登录,当我尝试添加插件时,会出现一个弹出窗口,上面写着“您没有添加插件的权限”

除了不能添加插件外,django cms界面的其他一切似乎都运行良好——我可以查看管理员、创建页面、在live和draft之间切换,等等

我已经查看了django cms代码,似乎错误源于cms.admin.pageadmin.pageadmin类中的发布者草案检查:

def has_add_plugin_permissions(self, request, placeholder, plugin_type):
    ...
    ...                       
    if page and not page.publisher_is_draft:                                 
        return False                                                         
    return True   
基本上,django cms似乎不认为页面处于草稿模式,尽管我根据前端进入了“草稿模式”(即:将“直播”模式图标切换为“草稿”)。上述函数pass中的其他检查确认错误不是用户权限问题(事实上,正如我前面提到的,错误发生在超级用户身上),而是页面状态的问题


这只是django cms 3.0.6与django 1.7集成的问题,还是我遗漏了一些明显的东西?有什么想法吗

在深入研究之后,我把问题缩小到我的settings.py文件中。在MIDDLEWARE_类中,我最初有一个重复的条目“django.contrib.sessions.MIDDLEWARE.SessionMiddleware”(参见第一行和最后一行):

正确的配置是:

MIDDLEWARE_CLASSES = ( 
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.locale.LocaleMiddleware', 
    'django.middleware.doc.XViewMiddleware',
    'django.middleware.common.CommonMiddleware',
    'cms.middleware.user.CurrentUserMiddleware',
    'cms.middleware.page.CurrentPageMiddleware',
    'cms.middleware.toolbar.ToolbarMiddleware',
    'cms.middleware.language.LanguageCookieMiddleware',
)
删除此重复行、重新启动服务器并注销/登录(可能是为了刷新会话)后,问题消失了。另一方面,在恢复重复行、重新启动服务器并注销/登录后,问题再次出现

不幸的是,我不明白为什么重复行会导致问题-但是在这个阶段,我可以将这种理解推迟一次


考虑到重复的行似乎会导致问题(而且这些问题可能会花费相当多的时间进行调试),如果Django在存在此类错误配置的情况下抛出错误,那就太好了。

如果我尝试在作为应用程序实例的页面上添加或调整插件或模板,我会遇到权限问题

例如,如果您试图从博客前端更改某些内容,那么如果您在博客条目上,您将无权更改这些内容--无论您的状态如何,您都必须在博客的父页面上进行任何更改

这与一个应用程序下运行的多个页面看起来像是单独的页面这一事实有关,但在引擎盖下,它们都是同一页面的变体,并且只提供了虚拟URL


我想一个解决办法——在博客应用程序的情况下——让像图库这样的东西只出现在父页面的特定子页面上——是将插件添加到父页面,在所有子页面上它都是可选的,但你只需在99%的时间里忽略它,而且它不会影响您不想要的页面。

您也是员工吗?拉弗斯特:是的,我是一名活跃的员工和超级用户。我刚刚遇到了一个与中间件复制无关的类似情况。在我的例子中,我使用的是apphooked模型。该模型扩展了一个CMS页面,该页面本身包含一个占位符。这个占位符会出现在我的应用程序的模板中,但由于它连接到CMS页面而不是应用程序,我没有做任何事情的权限。因为我不明白为什么重复行会导致问题,我将等待几天接受我自己的答案,希望有人能提供一些反馈。
MIDDLEWARE_CLASSES = ( 
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.locale.LocaleMiddleware', 
    'django.middleware.doc.XViewMiddleware',
    'django.middleware.common.CommonMiddleware',
    'cms.middleware.user.CurrentUserMiddleware',
    'cms.middleware.page.CurrentPageMiddleware',
    'cms.middleware.toolbar.ToolbarMiddleware',
    'cms.middleware.language.LanguageCookieMiddleware',
)