2014-10-15 3 views
0

У меня есть код, который я не могу опустить. Чем больше я смотрю на него, тем больше я смущаюсь.django/python collections issue

Существует два значения даты и код языка, который передается в функцию js. Тогда есть коллекция django (я думаю!), Которая взаимодействует с тегом языка django, чтобы назначить правильные значения.

Я думал, что правильно настроил это, но код не работает, и я не могу понять причину этого, так как мой опыт недостаточно хорош, чтобы увидеть, где я ошибся.

Ошибка возникает, когда я пытаюсь вызвать names.month (как показано в последней строке), поэтому я думаю, что я сделал ошибку в коде name_map или в назначении переменных lc и LANGUAGE_CODES.

Переданные значения являются:

date1: 10/2000;

дата2: 12/2004;

dynamic_language_code: de;

Любые предложения были бы замечательными.

function dateCalculation(date1, date2, dynamic_language_code) { 

//this function will accept two dates (format: mm/yyyy) and calculate the difference between the 2 dates and display the difference as x months or x years, x months. 

var a = date1; 
var b = date2; 
var lc = dynamic_language_code; 
var LANGUAGE_CODES = 'ar, zh-CN, zh-TW, en-GB, en, fr, fr-CA, de, it, pl, pt, pt-BR, ru, es-419, es'; 

var name_map = { 
    {% for lc in LANGUAGE_CODES %} 
     {{ lc }}: { 
      month: "{% language lc %}{% trans 'month' %}{% endlanguage %}", 
      months: "{% language lc %}{% trans 'months' %}{% endlanguage %}", 
      year: "{% language lc %}{% trans 'year' %}{% endlanguage %}", 
      years: "{% language lc %}{% trans 'years' %}{% endlanguage %}" 
     } {% if not forloop.last %},{% endif %} 
    {% endfor %} 
} 
names = name_map[lc]; 
if(names === undefined) { names = name_map['en']; } 

.... 
time_span = total_months + " " + names.month; 
.... 
+1

Как выглядит код при визуализации (т.е. в View Source)? Кажется, у вас есть некоторая путаница между серверными и клиентскими переменными здесь: вы определяете JS-переменную 'LANGUAGE_CODES', но также пытаетесь выполнить итерацию через тег, называемый LANGUAGE_CODES', в теге шаблона. Это то же самое, или вы также передаете LANGUAGE_CODES в контекст шаблона? –

+0

Это действительно шаблон, используемый django для генерации (в данном случае) js-кода, '{% ...%}' и '{{...}}' являются выражениями для этого языка шаблонов. Какая ошибка? И можете ли вы дать нам код, который отображает шаблон? – Dettorer

+0

Как @DanielRoseman упоминает, что вы путаете код на стороне сервера с клиентским кодом. –

ответ

1

Вы перепутали код на стороне сервера с кода на стороне клиента

Например,

код на стороне сервера

from django.shortcut import render_to_response 

name_map_handler(request, **kwargs): 
    """ 
    some code to handler the ajax request 
    """ 
    render_to_response('the_template_you_want_to_use.html', {'LANGEAGE_CODES': ['zh-hans', 'de']) 

только переменная на стороне сервера, что вы решите, что рендер может использоваться в шаблоне Django. Точно так же как LANGAGE_CODES в моем примере.