2015-11-17 2 views
2

Есть ли способ использовать условный оператор из тегов {% compress %} в шаблоне Django, который использует Django Compressor?Есть ли способ использовать условные операторы IF в дескрипторах сжатия Django Compressor?

Я пробовал, но он вызывает ошибку. Вот пример того, что я устал:

{% compress js %} 
    <script src="{{ STATIC_URL }}js/example-1.js"></script> 
    <script src="{{ STATIC_URL }}js/example-2.js"></script> 
    {% if settings.EXAMPLE %} 
    <script src="{{ STATIC_URL }}js/example-3.js"></script> 
    {% endif %} 
{% endcompress %} 

И это ошибка я получаю:

Пожалуйста, обратите внимание, я использую версию 1.4 Джанго компрессора.

Validating models... 

0 errors found 
Django version 1.4.12, using settings 'ukcms.settings' 
Development server is running at http://0.0.0.0:8014/ 
Quit the server with CONTROL-C. 
---------------------------------------- 
Exception happened during processing of request from ('127.0.0.1', 64989) 
---------------------------------------- 
[17/Nov/2015 21:25:28] "GET/HTTP/1.1" 200 87387 
Traceback (most recent call last): 
    File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 86, in run 
    self.finish_response() 
    File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 128, in finish_response 
    self.write(data) 
    File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 217, in write 
    self._write(data) 
    File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 324, in write 
    self.flush() 
    File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 303, in flush 
    self._sock.sendall(view[write_offset:write_offset+buffer_size]) 
error: [Errno 41] Protocol wrong type for socket 
[17/Nov/2015 21:25:28] "GET/HTTP/1.1" 500 59 
Traceback (most recent call last): 
    File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 595, in process_request_thread 
    self.finish_request(request, client_address) 
    File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 334, in finish_request 
    self.RequestHandlerClass(request, client_address, self) 
    File "/Users/owen/src/uktv/ukcms/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 139, in __init__ 
    super(WSGIRequestHandler, self).__init__(*args, **kwargs) 
    File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 653, in __init__ 
    self.finish() 
    File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 712, in finish 
    self.wfile.close() 
    File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 279, in close 
    self.flush() 
    File "/usr/local/Cellar/python/2.7.8_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 303, in flush 
    self._sock.sendall(view[write_offset:write_offset+buffer_size]) 
error: [Errno 32] Broken pipe 

ответ

3

Ни один из usage examples in the documentation не включают в себя условные и review of the code for the compress template tag предполагает то потому что его, вероятно, не представляется возможным.

Вместо этого следует использовать два отдельных блока: compress

{% compress js %} 
    <script src="{{ STATIC_URL }}js/example-1.js"></script> 
    <script src="{{ STATIC_URL }}js/example-2.js"></script> 
{% endcompress %} 
{% if settings.EXAMPLE %} 
    {% compress js %} 
     <script src="{{ STATIC_URL }}js/example-3.js"></script> 
    {% endcompress %} 
{% endif %}