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
Python Django 1.6 OrderedDict在请求之间的保留状态?默认情况下是否启用缓存?_Python_Django - Fatal编程技术网

Python Django 1.6 OrderedDict在请求之间的保留状态?默认情况下是否启用缓存?

Python Django 1.6 OrderedDict在请求之间的保留状态?默认情况下是否启用缓存?,python,django,Python,Django,我正在使用django 1.6.0。我正在开发一个带有客户端“仪表板”的web应用程序。在客户端仪表板中,基本模板的标题中有选项卡。选项卡是动态的,并根据查看仪表板的用户的角色/权限进行更改 所有视图都是使用基于类的视图编写的。所有仪表板视图都继承自父mixin视图,该视图确保登录用户具有查看其请求查看的对象的权限,并基于其用户角色构建仪表板选项卡 class ParentMixin(object): pages = OrderedDict([ ('General': { 'link

我正在使用django 1.6.0。我正在开发一个带有客户端“仪表板”的web应用程序。在客户端仪表板中,基本模板的标题中有选项卡。选项卡是动态的,并根据查看仪表板的用户的角色/权限进行更改

所有视图都是使用基于类的视图编写的。所有仪表板视图都继承自父mixin视图,该视图确保登录用户具有查看其请求查看的对象的权限,并基于其用户角色构建仪表板选项卡

class ParentMixin(object):
  pages = OrderedDict([
    ('General': { 'link': build_a_link_for_the_logged_in_user()}),
  ])

  def dispatch(self, *args, **kwargs):
     # validate that logged in user has permission to view requested objects
     if user_passes_test(self.request.user):
        self.object = get_users_object_to_view(self.request.user)

  def get_context_data(self, **kwargs):
     if self.request.is_superuser and self.object.is_demo:
        self.pages['Superuser'] = {'link': build_link()}
     context = super(parent_get_context_data)
     context['pages'] = self.pages
然后,在所有仪表板视图继承自的基础模板中,将显示动态选项卡/链接:

            {% for page_name, page_data in pages.items %}
                {% if page_data.is_current %}
                    <a href="{{ page_data.link }}" class="current">
                {% else %}
                    <a href="{{ page_data.link }}">
                {% endif %}

                    {{ page_name }}
                </a>
            {% endfor %}

谢谢你,

这正是你告诉它的。您已经将
pages
设置为ParentMixin的class属性,这意味着它也将是您将其混合到的任何视图类的class属性。类属性在一个进程内的所有类实例之间共享,并且由于一个进程在多个请求之间持续,因此数据将在这些请求之间持续存在

您应该始终在
self
上设置属性,这意味着在方法中执行此操作,在这种情况下可能在
get\u context\u data
中执行。Django做了一些努力,以确保实例数据不在基于类的视图中共享,但这不适用于类级数据

if 'Superuser' in self.pages:
  del(self.pages['Superuser'])