У меня есть следующее:
return render_to_response('a.html', {'b': 3}, context_instance=...)
в a.html
:
{{ b }}
выходы 3
{% url app.views.something b %}
дает мне:
/something/3/
но
<script type="text/javascript">
$(document).ready(function() {
alert('{{ b }}');
});
</script>
всплывает диалоговое окно с предупреждением 3. Но если вы просматриваете источник, вы получаете:
<script type="text/javascript">
$(document).ready(function() {
alert('0');
});
</script>
Если я пытаюсь использовать {{ b }}
в jquery где-либо еще, он просто возвращает мне «0».
То же самое происходит, если я делаю следующее и проверяю источник до появления всплывающего окна
<script type="text/javascript">
setTimeout("alert('{{ b }}')",2000);
<script>
Во всплывающем окне указано «3», а в источнике - «0».
У кого-нибудь было что-нибудь подобное раньше?
EDIT:
Я использовал HTTP-лису, чтобы сделать вывод, что это проблема AJAX. Джанго возвращает «3» в браузер.
Хотя приведенный выше пример кода является чрезмерным упрощением. В основном я обновляю div (родительский объект content_ct), в котором используется код, с помощью команды jquery ajax.
$('#ctSelection').change(function() {
if($('#ctSelection option:selected').val()=='1') {
$.get('/company/ct/1/', function(data) {
$('#content_ct').parent().html(data);
});
}
if($('#ctSelection option:selected').val()=='2') {
$.get('/company/ct/2/', function(data) {
$('#content_ct').parent().html(data);
});
}
});
EDIT
Я полагаю, что это происходит из-за перекрывающихся обработчиков jquery и всегда использует первый в стеке