IT Блог

Документации и переводы

Статьи на технические темы

Проблема при отправке данных на сервер с помощью ajax

Обновление зависимостей проекта - всегда "весёлая" штука. Бывает после обновления отваливается какая-то функциональность. Обнаружить поломки нам помогают автоматизированные тесты, которые помогли и мне после того как я обновил Django до версии 1.5.

После обновления возникла проблема: view перестал видеть данные отправленные через аjax. Решением послужило удаление всего одного параметра при вызове метода ajax - contentType: "application/json". Поэтому, если у вас что-то похожее на мой код:

$.ajax({
    type: 'POST',
    contentType: "application/json",
    url: '{% url 'my_app.views.my_ajax_hander' %}',
    data: data_dict,
}).done(function(result) {
        some_function()
    });

то уберите строчку - contentType: "application/json", и у вас должно заработать.


range цикл в шаблоне Django

Бывают случаи, когда нужно в шаблоне пройтись циклом не по объектам, а по диапазону значений. Но шаблонный движок Django этого не позволяет. Также нет специального фильтра в стандартном наборе фильтров Django, но можно легко написать свой. Например так: в файле my_app/templatetags/my_filters.py пишем:

@register.filter
def create_range(value, start_index=0):
    return range(start_index, value+start_index)

И теперь в шаблоне уже можно использовать созданный фильтр:

{% load my_filters %}
{% for i in 10|create_range %}
...
{% endfor %}

Если нам нужно возвращать i, начиная с единицы, то используем в шаблоне так:

{% load my_filters %}
{% for i in 10|create_range:1 %}
...
{% endfor %}

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте