Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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
django mobile视图渲染到桌面&;使用缓存时,反之亦然_Django_Caching_Django Cms - Fatal编程技术网

django mobile视图渲染到桌面&;使用缓存时,反之亦然

django mobile视图渲染到桌面&;使用缓存时,反之亦然,django,caching,django-cms,Django,Caching,Django Cms,我有一个运行Django CMS的项目,用于向mobile定义呈现不同的模板 在Django CMS中启用页面缓存后,可以在桌面浏览器或其他方式上查看完整的移动模板;移动桌面 从一些谷歌文档中,我认为解决这个问题的方法是为补丁头设置中间件 from django.utils.cache import patch_vary_headers class VaryHeaderMiddleware(object): def process_response(self, request, re

我有一个运行Django CMS的项目,用于向mobile定义呈现不同的模板

在Django CMS中启用页面缓存后,可以在桌面浏览器或其他方式上查看完整的移动模板;移动桌面

从一些谷歌文档中,我认为解决这个问题的方法是为
补丁头设置中间件

from django.utils.cache import patch_vary_headers


class VaryHeaderMiddleware(object):
    def process_response(self, request, response):
        # Set Vary Header based on
        # https://developers.google.com/webmasters/smartphone-sites/details

        patch_vary_headers(response, ['User-Agent'])

        return response
禁用
CMS\u PAGE\u缓存
后,我没有看到完整页面模板呈现到错误的设备上,但是我得到了一个使用桌面模板呈现的页面,但是通过CMS占位符呈现到页面的应用程序已经将其移动模板呈现到桌面上。此时,
CMS\u占位符\u缓存
CMS\u插件\u缓存
仍处于启用状态

现在我刚刚从Django中发现了这一点,这表明在使用页面缓存装饰器时可以省略vary头,但是如果在缓存某些元素时看到模板呈现不匹配,这种情况会在更大范围内发生吗

我正在运行最新的django mobile 0.5.0,我相信所有中间件类都是按照正确的顺序定义的

    'project.middleware.VaryHeaderMiddleware',
    'django_mobile.middleware.MobileDetectionMiddleware',
    'django_mobile.middleware.SetFlavourMiddleware',
    'django_mobile.cache.middleware.CacheFlavourMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
)

CMS\u页面\u缓存
无法区分移动设备和桌面设备时,可以将其关闭并用模板片段缓存替换,请参阅

最简单的方法是用例如

{% load cache %}
{% cache 500 the_whole_page %}
并以

{% endcache %}
我还没有测试过,但应该能用