2017-03-01 30 views
3

我在項目中將Django從1.7升級到1.10。Django 1.10將問號轉換爲靜態文件URL中的百分號

所有靜態文件加載正確。然而,版本(或任何其他參數)不是。原因是Django出於某種原因將問號轉換爲%

例子:

<script src="{% static 'dashboard/js/dashboard.js?v=1.11.0' %}"></script> 

轉化爲

/static/dashboard/js/dashboard.js%3Fv%3D1.11.0 

靜態文件的配置:

STATIC_URL = '/static/' 
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage' 
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 

可能是什麼原因?

+6

它會轉義它,因爲它會與用作查詢字符串開頭的真正qmark衝突。你可以嘗試「{%static'dashboard/js/dashboard.js'%}?v = 1.11.0」,看看是否有效...... –

+0

你試過使用'autoescape'嗎? https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#autoescape –

+0

@JonClements非常感謝你的想法。我在關閉'%}'之後移動了'?v = 1.11.0'部分以使'%}?v = 1.11.0',它顯然正在工作。我想知道django1.7和django1.10之間有什麼變化。無論如何,如果你把它作爲答案發布,我會接受它。謝謝! –

回答

3

{% static path %}模板標籤預計path是一個有效的文件路徑並將其轉義。請改爲使用以下語法:

<script src="{% static 'dashboard/js/dashboard.js' %}?v=1.11.0"></script>