[英]Django Passing arguments to linked .js script template
我正在使用highcharts呈現一些圖形。 每個圖都用一個javascript塊定義。 我不想特別為每個使用圖形呈現頁面的.html模板重復相同的代碼,因此我考慮使用highcharts代碼編寫.js模板,並使用如下代碼行進行加載:
<script type="text/javascript" src="/some/url/to/myfile.js"></script>
因此,基本流程是:瀏覽到某些URL> urls.py調用myHtmlView()>呈現html模板>調用外部.js腳本> urls.py調用myJsView()>呈現js模板>圖形出現在網頁上某處。
但是,我有很多參數要提供給呈現此.js模板的視圖。 目前,我在url中傳遞了這些參數,但是由於url變得很長而感到笨拙,並且正則表達式讀取它們的可讀性不是很高。 此外,我想傳遞一些列表,甚至一些查詢集。 有什么更好的方法可以將圖形的代碼存儲在外部模板中? 除了在url中編碼參數並在urls.py中讀取參數之外,還有其他選項可以將參數傳遞給它嗎?
我希望這是有道理的,並且是話題。
編輯:為了完整性:
#urls.py
urlpatterns = patterns(
(r'^/graph/$', views.myhHtmlView),
(r'^/js/(?P<myVar>\d+/$', views.myJsView),
)
#views.py
myHtmlView(request):
context = {'myVar': 42}
render(request, 'htmlTemplate.html', context)
myJsView(request, myVar):
context = {'myVar': myVar}
render(request, 'jsTemplate.js', context, content_type='text/javascript')
#htmlTemplate.html
<script type="text/javascript" src="/js/{{ myVar }}"></script>
#and the rest of the page...
#jsTemplate.js
#some javascript here for rendering the graph, which uses {{ myVar }}...
回答我自己的問題。 似乎最好的方法是使用自定義的inclusion_tag
: https : //docs.djangoproject.com/en/dev/howto/custom-template-tags/#inclusion-tags
所以我現在有:
#urls.py
urlpatterns = patterns(
(r'^/graph/$', views.myhHtmlView),
)
#myApp/views.py
myHtmlView(request):
context = {'myVar': 42}
render(request, 'htmlTemplate.html', context)
#myApp/templatetags/myTags.py
from django import template
myJsView(request, myVar):
jsContext = {'myVar': myVar}
return jsContext
register = template.Library()
register.inclusion_tag('jsTemplate.js', takes_context=True)(myJsView)
#htmlTemplate.html
#some html here...
<script type="text/javascript">{% myJsTag myVar %}</script>
#and the rest of the page...
#jsTemplate.js
#some javascript here for rendering the graph, which uses {{ myVar }}...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.