Django-compressor: تم تمكين الضغط في وضع عدم الاتصال ولكن المفتاح مفقود من البيان في وضع عدم الاتصال

تم إنشاؤها على ١ ديسمبر ٢٠١١  ·  17تعليقات  ·  مصدر: django-compressor/django-compressor

لست متأكدًا من ماهية هذه المشكلة ولكني أستخدم الإنشاء في وضع عدم الاتصال ويحدث هذا الخطأ بعد استخدام أمر إدارة الضغط والوصول إلى موقع الويب. هل يجب أن يكون لكل ملف من ملفات css هذه مفتاحه الخاص؟

اعداداتي:
COMPRESS_URL = STATIC_URL
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_OFFLINE = صحيح
COMPRESS_OFFLINE_MANIFEST = "manifest.json" # تم إنشاؤه في دليل CACHE
COMPRESS_CSS_FILTERS = ['compressor.filters.css_default.CssAbsoluteFilter'، 'compressor.filters.cssmin.CSSMinFilter']
COMPRESS_YUI_BINARY = os.path.join (PROJECT_ROOT ، "bin / yui.sh")
COMPRESS_JS_FILTERS = ['compressor.filters.closure.ClosureCompilerFilter']
COMPRESS_CLOSURE_COMPILER_BINARY = os.path.join (PROJECT_ROOT، 'bin / clos.sh')
COMPRESS_CLOSURE_COMPILER_ARGUMENTS = "--language_in = ECMASCRIPT5"

COMPRESS_STORAGE = 'compressor.storage.GzipCompressorFileStorage' # لا يعمل WTF

تم تمكين الضغط بلا إنترنت ولكن المفتاح "b68ba4d2116295c56138e439f1b03a03" مفقود من بيان وضع عدم الاتصال. قد تحتاج إلى تشغيل "python management.py compress".

طريقة الطلب: GET
عنوان URL للطلب: http://127.0.0.1 : 8000 /
إصدار Django: 1.3.1
نوع الاستثناء: OfflineGenerationError
قيمة الاستثناء:
تم تمكين الضغط بلا إنترنت ولكن المفتاح "b68ba4d2116295c56138e439f1b03a03" مفقود من بيان وضع عدم الاتصال. قد تحتاج إلى تشغيل "python management.py compress".
موقع الاستثناء: /srv/www/project/lib/python2.6/site-packages/compressor/templatetags/compress.py in render_offline ، السطر 56

Variable    Value
forced  
False
self    
<compressor.templatetags.compress.CompressorNode object at 0x966764c>
compressor  
<compressor.js.JsCompressor object at 0x966732c>
key 
'b68ba4d2116295c56138e439f1b03a03'
offline_manifest    
{u'32e9172ad82f3b6d238cc7423a7f10c7': u'<link rel="stylesheet" href="/static/CACHE/css/a50381ce7ba9.css" type="text/css" media="screen" /><link rel="stylesheet" href="/static/CACHE/css/62afac347423.css" type="text/css" /><link rel="stylesheet" href="/static/CACHE/css/f336d54a5423.css" type="text/css" media="screen" /><link rel="stylesheet" href="/static/CACHE/css/5cf783d07673.css" type="text/css" />',
 u'b1bd8f68f96dfa53380b10881f8eb691': u'<script type="text/javascript" src="/static/CACHE/js/19522c6ee302.js"></script>',
 u'c6d6d2948d18188277e7a987c71e2bc3': u'<script type="text/javascript" src="/static/CACHE/js/90bda37980a5.js"></script>',
 u'dbe0b22545cd64193d8a875c3226b1ea': u'<script type="text/javascript" src="/static/CACHE/js/71056921eb77.js"></script>'}

التعليق الأكثر فائدة

ليحدث نفس الشيء ليس لديك أي تعليمات برمجية مضمنة مضغوطة ، والمفتاح الذي يبلغ عن فقدانه موجود في الواقع في ملف manifest.json
لا أعرف حقًا ما الذي يحدث بحق الجحيم ، ما زال لدى أي شخص آخر هذا؟ جميع التعليقات الأخرى على هذا من عام مضى

ال 17 كومينتر

ما هو إصدار django_compressor الذي تستخدمه؟

كل ما هو موجود في PyPI. سأحاول الترقية إلى أحدث إصدار مطور. شكرا

واجهت نفس المشكلة عن طريق خلط البرامج النصية المضمنة مع الملفات المضمنة.

كان هذا رمز القالب الخاص بي.

{% compress js %}
    <script type="text/javascript">
    xhr_cidades = '{% url cidades_consulta %}';
    xhr_imoveis = '{% url imoveis_consulta %}';
    xhr_empresas = '{% url empresas_consulta %}';
    xhr_empreend = '{% url empreendimentos_consulta %}';
    </script>

    <script type="text/javascript" src="{{ STATIC_URL }}jquery-1.6.1.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}jquery-ui/jquery-ui-1.8.13.custom.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}jquery-ui/jquery-ui-datepicker-pt-BR.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}jquery-ui/jquery-ui-combobox.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}jquery-meiomask-1.1.3.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}jquery-scrollto-1.4.2.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}jquery-dotimeout-1.0.min.js"></script>
    <script type="text/javascript" src="{{ STATIC_URL }}base.js"></script>
{% endcompress %}

وهذه هي البيانات التي كان يستخدمها ضاغط Django لإنشاء مفتاح البيان.

['\n    <script type="text/javascript">\n        xhr_cidades = \'', '<django.template.defaulttags.URLNode object at 0x23cf1d0>',
 "';\n        xhr_imoveis = '", '<django.template.defaulttags.URLNode object at 0x23cf750>', "';\n        xhr_empresas = '",
 '<django.template.defaulttags.URLNode object at 0x23cf210>', "';\n        xhr_empreend = '",
 '<django.template.defaulttags.URLNode object at 0x23cf2d0>', '\';\n    </script>\n\n    <script type="text/javascript" src="',
 '<Variable Node: STATIC_URL>', 'jquery-1.6.1.min.js"></script>\n    <script type="text/javascript" src="', '<Variable Node:
 STATIC_URL>', 'jquery-ui/jquery-ui-1.8.13.custom.min.js"></script>\n    <script type="text/javascript" src="', '<Variable
 Node: STATIC_URL>', 'jquery-ui/jquery-ui-datepicker-pt-BR.min.js"></script>\n    <script type="text/javascript" src="',
 '<Variable Node: STATIC_URL>', 'jquery-ui/jquery-ui-combobox.min.js"></script>\n    <script type="text/javascript" src="',
 '<Variable Node: STATIC_URL>', 'jquery-meiomask-1.1.3.min.js"></script>\n    <script type="text/javascript" src="',
 '<Variable Node: STATIC_URL>', 'jquery-scrollto-1.4.2.min.js"></script>\n    <script type="text/javascript" src="', '<Variable
 Node: STATIC_URL>', 'base.js"></script>\n']

المفتاح هو ملخص لتمثيل السلسلة لقائمة العقد داخل كتلة {% compress %} . إذا اختلفت هذه البيانات في كل مرة يتم فيها تحليل الكتلة (راجع العنوان 0x23cf750 على عقدة URL أعلاه) ، فسيؤدي تحميل الصفحة دائمًا إلى إنشاء مفتاح مميز مما قمت بتخزينه في ملف البيان الخاص بك.

في حالتي ، أدت إزالة الشفرة المضمنة من كتلة {% compress %} إلى حل المشكلة.

يمكنك تتبع البيانات وهضمها في دالة get_hexdigest الخاصة ببرنامج Compressor.cache . ابحث عن أدلة في الإخراج القياسي / سجل أخطاء خادم الويب.

آمل أن يساعد ،

يجب أن يتم إصلاحه في نسخة التطوير ، وذلك بفضل الإصلاح الذي تم إدخاله في رقم 154

يبدو أن المشكلة تكمن في تضمين نص برمجي داخل كتلة مضمنة. كان هذا في أحدث إصدار مطور. شكراًviotti

{% compress js inline %}
<script type="text/javascript" src="/static/js/pages/calculator.js"></script>

ربما يجب إغلاق هذه المشكلة ، كما ذكرنا سابقًا هنا ، إنها نسخة مكررة من # 154.

مرحباً ، أنا أعاني من هذه المشكلة. تبدو إعداداتي. py كما يلي:

### COMPRESSION - django_compressor
COMPRESS_ENABLED = True
COMPRESS_OFFLINE = True
COMPRESS_PARSER = 'compressor.parser.LxmlParser'
COMPRESS_CSS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    ]
COMPRESS_JS_FILTERS = [
    'compressor.filters.closure.ClosureCompilerFilter',
]

COMPRESS_CLOSURE_COMPILER_BINARY = 'java -jar /path/to/compiler.jar'

جميع الأعمال صحيحة باستثناء كود js المضمّن الموجود في ملف html. لدي العديد من الملفات الخارجية css / js مرتبطة من html. كل هذه الأشياء مضغوطة جيدًا باستخدام {٪ compress css / js٪} ، ولكن عندما أحاول ضغط كل كود js المطبوع في ملف .html (رمز بين

لا تزال تواجه مشاكل مع هذا. يبدو أنه حتى في فرع dev ، باستخدام {{STATIC_URL}} ، تولد عملية التوليد السداسي عشري جديدة لا معنى لها ولا تتوافق مع الأشكال السداسية المحفوظة في manifest.json.

الحل: ليس لديك ضغط js تمتد كتلة. على سبيل المثال ، استخدم الضغط مرة واحدة في القالب الرئيسي ومرة ​​واحدة في القوالب التي يرثها كل منها. الجانب السلبي: طلبان من HTTP لكل من css و js ، بدلاً من طلب واحد. يمكن اختزاله إلى واحد عن طريق نقل master js / css ليكون في جميع القوالب.

سيكون رائعًا إذا لم يكن علينا الاختيار بين DRY في القوالب وتقليل طلبات http :)

ليحدث نفس الشيء ليس لديك أي تعليمات برمجية مضمنة مضغوطة ، والمفتاح الذي يبلغ عن فقدانه موجود في الواقع في ملف manifest.json
لا أعرف حقًا ما الذي يحدث بحق الجحيم ، ما زال لدى أي شخص آخر هذا؟ جميع التعليقات الأخرى على هذا من عام مضى

altryne : قد تكون مشكلة تتعلق بالأذونات ، تحقق من أن عملية خادم الويب / django لها الحق في قراءة البيان. لا يمكن أن تساعد أكثر بكثير دون مزيد من التفاصيل.

اتضح أنه كان عبارة عن شيء Django يحتوي على 500 صفحة. مع الضغط في وضع عدم الاتصال ، حاول django عرض 500 صفحة بدون سياق ، مما أدى بحد ذاته إلى إنشاء الخطأ 500.

لقد ساعد هذا حقًا:
http://chriskief.com/2013/09/18/django-compressor-offlinegenerationerror-and-500-html-handler500/

مرحبًا بالجميع ، كان الرابط إلى chriskief.com مفيدًا. ومع ذلك ، لم يحل المشكلة بالنسبة لي. اتضح أنه كان لدي قوالب django مثل "{{myvar}}" في جافا سكريبت الخاص بي. لقد نسيت إضافتها إلى COMPRESS_OFFLINE_CONTEXT ومن ثم حصلت على خطأ المفتاح المفقود. بمجرد إخراج جميع نصوص جافا سكريبت الخاصة بي مع متغيرات القالب من الضاغط ، سارت الأمور على ما يرام مرة أخرى. قبل أن أحصل على خطأ 500 والذي لم يعرض خطأ django القياسي ولكن "صفحة التهيئة الخاطئة" في Apache. لست متأكدًا حتى الآن ، إذا كانت هناك تعريفات مفقودة في COMPRESS_OFFLINE_CONTEXT فقط هي المشكلة أو إذا كان {٪ url ...٪} أيضًا هو سبب هذه المشكلة.

أرى هذا في النشر الخاص بي. أنا أستخدم ضغط مثل ذلك

{% compress css %}
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'css/bootstrap-social.css' %}">
<link rel="stylesheet" type="text/css" href="{% sass_src 'css/base.scss' %}">
{% endcompress %}

هل يمكن أن يكون الضغط لا يمكنه معالجة علامة sass_src ؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات