2017-10-24 11 views
0

私はビューによって渡された場合のjsファイルが含まれますいくつかのビューで使用するテンプレートの条件を持って生産にstaticfileエラーが不足している原因ジャンゴ条件付きのJavaScriptファイルは、

これは、開発中にエラーが発生しないが、生産にプッシュするとき、私はエラーを取得する

....... 
context = {'title': 'Sign up', 
       'form': form, 
       'js_file': 'js/supplier.js'} 
    return render(request, 'pages/signup.html', context) 

:によってビューで使用される例である

{% if js_file %} 
    {% block inner_js %} 
    <script defer type="text/javascript" src="{% static js_file %}"></script> 
    {% endblock inner_js %} 
{% endif %} 
ValueError at /users/example/ 
Missing staticfiles manifest entry for '' 

上記のブロックを削除した場合、このエラーは消えてしまいます(jsファイルなしでテンプレートを使用するビューでは問題ありません)。 jsファイルを使用するすべてのビューに対して新しいバージョンのテンプレートを作成する必要はなく、これを修正するより良い方法はありますか? (少し奇妙なエラーのようです)。

答えて

1

あなたがしているように条件付きでブロックを含める/除外できるとは思いません。 ifタグをblockの内部に配置すると、変数js_fileが入力されたときにのみ<script>タグが含まれます。

あなたは条件付きでアップ高いテンプレートにinner_jsと呼ばれる別のブロックを無効にするために、このブロックを含めている場合は、あなたが同じ結果を達成するために、このような何かを行うことができます。

{% block inner_js %} 
    {% if js_file %} 
     <script ...></script> 
    {% else %} 
     {{ block.super }} 
    {% endif %} 
{% endblock inner_js %} 

{{ block.super }}はPythonの呼び出しに相当しクラス内でsuperを使用し、ベースを拡張するテンプレート内のブロック拡張を許可します。

+0

おかげで元の状態からif条件を変更する必要がありましたが、現在は動作しています。ありがとう。 – Yunti

+0

ああ、申し訳ありません。私は衰えた!修正していただきありがとうございました、と喜んでそれが助け:) – dannosaur

関連する問題