Javascript 如何在Java脚本中使用Django模板标记而不使用for循环

Javascript 如何在Java脚本中使用Django模板标记而不使用for循环,javascript,python,django,Javascript,Python,Django,我想在JavaScript中使用模板变量: 我的问题是在javascript代码中使用for循环,for循环之间的每一件事情都会重复。。但是我不想…下面我已经粘贴了我的代码…有人能告诉我更好的方法吗…因为这看起来很难看 这是我的密码: {% block extra_javascript %} <script src="/static/js/Chart.min.js"></script> <script> $(docum

我想在JavaScript中使用模板变量: 我的问题是在javascript代码中使用for循环,for循环之间的每一件事情都会重复。。但是我不想…下面我已经粘贴了我的代码…有人能告诉我更好的方法吗…因为这看起来很难看

这是我的密码:

    {% block extra_javascript %}
    <script src="/static/js/Chart.min.js"></script> 
    <script>    
    $(document).ready(function(){
        var data = {
    labels : ["January","February","March","April","May","June","July","August","September","October","November","December"],
    datasets : [
        {
            fillColor : "rgba(151,187,205,0.5)",
            strokeColor : "rgba(151,187,205,1)",

                      data : [{{ stats_dict.0.Jan }},{{ stats_dict.1.Feb }},{{ stats_dict.2.March }},{{ stats_dict.3.April }}
                      ,{{ stats_dict.4.May }},{{ stats_dict.5.June }},{{ stats_dict.6.July }},{{ stats_dict.7.August }},{{ stats_dict.8.Sept }},
                      {{ stats_dict.9.Oct }},{{ stats_dict.10.Nov }},{{ stats_dict.11.Dec }}]                     


        }
    ]
};
    //Get context with jQuery - using jQuery's .get() method.
    var ctx = $("#myChart").get(0).getContext("2d");
    //This will get the first returned node in the jQuery collection.
    var myNewChart = new Chart(ctx).Bar(data,{});
    });
  </script>
  {% endblock %}
{%block-extra\u-javascript%}
$(文档).ready(函数(){
风险值数据={
标签:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”],
数据集:[
{
填充颜色:“rgba(151187205,0.5)”,
strokeColor:“rgba(151187205,1)”,
数据:[{stats_dict.0.Jan}、{{stats_dict.1.Feb}、{{stats_dict.2.March}、{{stats_dict.3.April}
,{stats_dict.4.May}、{stats_dict.5.June}、{stats_dict.6.July}、{stats_dict.7.August}、{{stats_dict.8.Sept},
{{stats_dict.9.Oct},{{stats_dict.10.Nov},{{stats_dict.11.Dec}]
}
]
};
//使用jQuery获取上下文-使用jQuery的.Get()方法。
var ctx=$(“#myChart”).get(0.getContext(“2d”);
//这将获得jQuery集合中返回的第一个节点。
var myNewChart=新图表(ctx).Bar(数据,{});
});
{%endblock%}
背景:

[[{'stats_dict': [{'Jan': 0}, {'Feb': 0}, {'March': 0}, {'April': 0}, {'May': 0}, {'June': 0}, {'July': 0}, {'August': 0}, {'Sept': 3}, {'Oct': 0}, {'Nov': 0}, {'Dec': 0}]}], {'csrf_token': <django.utils.functional.__proxy__ object at 0xa4d874c>}, {'perms': <django.contrib.auth.context_processors.PermWrapper object at 0xa4d878c>, 'user': <django.utils.functional.SimpleLazyObject object at 0xa47abcc>}, {}, {'LANGUAGES': (('ar', 'Arabic'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('bn', 'Bengali'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('el', 'Greek'), ('en', 'English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy-nl', 'Frisian'), ('ga', 'Irish'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hu', 'Hungarian'), ('id', 'Indonesian'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('nb', 'Norwegian Bokmal'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-cn', 'Simplified Chinese'), ('zh-tw', 'Traditional Chinese')), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'en-us'}, {'MEDIA_URL': ''}, {'STATIC_URL': '/static/'}, {'TIME_ZONE': 'America/Chicago'}, {'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0xa47ac6c>}]
[码码>>[{码>[{码>[{{{{{码>[{{{{{{{{{{{{{{{{{{{{{{统计数字数字录录录录录录录录录录录录录录,{{{{{{{{{码码>{{{{码码>{{码码>>{{{码>>{{{{码:,,{{{{{码},},{{{{{{{{{{{码:::},},},{{{{{{{{{{{{{{{州州州州::},},},},},},,,,,,{{{{{{{{{,”,”,”,”,”,”,”州州州州州州州州州州州,,,,,{{{门门录录录录录录录录录录录录录,(‘ca’、‘加泰罗尼亚’、(‘cs’、‘捷克’、(‘cy’、‘威尔士’)、(‘da’、‘丹麦’、(‘de’、‘德语’)、(‘el’、‘希腊’)、(‘en’、‘英语’、(‘en-gb’、‘英式英语’)、(‘eo’、‘世界语’、(‘es’、‘西班牙语’)、(‘es-ar’、‘阿根廷西班牙语’、(‘es-mx’、‘墨西哥西班牙语’)、(‘es-ni’、‘尼加拉瓜西班牙语’、‘et’、‘爱沙尼亚’、‘欧盟’、‘巴斯克’、‘fa’、‘波斯’、‘波斯’),(‘菲语’、‘芬兰语’、(‘法语’、‘法语’、(‘fy-nl’、‘frisan’、(‘ga’、‘爱尔兰’)、(‘gl’、‘加利西亚’)、(‘他’、‘希伯来语’、(‘hi’、‘印地语’)、(‘hr’、‘克罗地亚’、(‘hu’、‘匈牙利’)、(‘id’、‘印尼’、(‘is’、‘冰岛’、‘it’、‘意大利语’、‘ja’、‘日语’、‘ka’、‘格鲁吉亚’、‘kk’、‘哈萨克’、‘km’、‘高棉’、‘kn’、‘卡纳达’、‘ko’、‘韩国’、‘韩国’),('lt','Lithuanian'),('lv','Latvian'),('mk','Macedonian'),('ml','Malayalam'),('mn','Mongian'),('nb','Norwegian Bokmal'),('ne','Nepali'),('nl','Dutch'),('nn Norwegian Nynorsk'),('pa','Punjabi'),('pl','Polish'),('pt','葡萄牙语'),('pt','pt','pt','pt','pt','pt','pt','br','巴西葡萄牙语',('ro','Romanian'),'Russian',('sl','Slovenian'),('sq','Albanian'),('sr','Serbian'),('sr-latn','Serbian-Latin'),('sv','sw','swhili'),('ta','Tamil'),('te','Telugu'),('th','Thai'),('tr土耳其语'),('tt','Tatar'),('ukin','ukainian'),('ur','Urdu和('vi','越南语'),('zh cn','简体中文','zh tw和','Traditional中文'),'LANGUAGE_BIDI':False,'LANGUAGE_CODE':'en us',{'MEDIA_URL':'',{'STATIC_URL':'/STATIC/'},{'Timeu ZONE':'America/Chicago'},{'messages':}]
第1步-永不永不混合使用JavaScript和Django模板语言。这是一种灾难设置

步骤2-重构

重构第一步:

创建一个新视图,输出一个JSON格式的日期记录(我不是在编写应用程序,但我会告诉您如何改进)

步骤b)-将当前代码重构为以下内容:

var dataForChart =  {
  labels: [months],
  datasets: [{
    fillColor: ...,
    strokeColor: ...,
    data: null,
  }]
}

$.get('/myStatsViewUrl', function(data) {
  dataForChart["data"] = data;
});
步骤c)
很高兴您现在已经将Django模板从javascript中解耦,并为此感到高兴,因为您现在可以在代码中的任何地方重用它了!

步骤1-永不永不混合使用javascript和Django模板语言。这是一个灾难性的设置

步骤2-重构

重构第一步:

创建一个新视图,输出一个JSON格式的日期记录(我不是在编写应用程序,但我会告诉您如何改进)

步骤b)-将当前代码重构为以下内容:

var dataForChart =  {
  labels: [months],
  datasets: [{
    fillColor: ...,
    strokeColor: ...,
    data: null,
  }]
}

$.get('/myStatsViewUrl', function(data) {
  dataForChart["data"] = data;
});
步骤c)
很高兴您现在已经将Djangos模板从javascript中分离出来,并为此感到非常高兴,因为您现在可以在代码中的任何地方重用它了

我不确定我是否理解统计数据中的内容。你能展示给它上下文的Python吗,或者把它打印出来吗?我想知道做我上面所做的事情的更好的方法……如果我使用for循环来获取stats\u dict值,整个java脚本将重复12次,我不想这样做……我不确定我是否理解
stats\u dict
中的内容。你能展示给它上下文的Python吗,或者把它打印出来吗?我想知道做我上面所做的事情的更好的方法……如果我使用for循环来获取stats_dict值,整个java脚本将重复12次,我不想这样做……你可以使用for序列化views@kroolik是的,当然,但我认为这不是解决他的问题的最好办法。你可以用它来序列化views@kroolik是的,当然,但我认为这不是解决他的问题的最好办法。