Django, UpdateView, обновление с использованием ajax - Python

Узнай цену своей работы

Формулировка задачи:

Django 1.10.

jquery-3.1.0

Решил сделать обновление данных через ajax. В общем, получаю чистое окно браузера. В Хроме в developer tools смотрю в дебаггере: Попадаю, в fail. И параметры jqXHR.status=0, textStatus = "error", errorThrown="". Причем, функцию попробовал вручную - все работает. И через аякс данные модели обновляет. А вот отразить результат - пробема. Миксин отрабатывает, шлет на выход данные и код 200. Пытаюсь шагать, дохожу в утробе Django до функции reloader_thread. А там цикл - while RUN_RELOADER. В общем, пошагал я его, пошагал. И на том и дело кончилось, может, он вечный. Говоря кстати, при наличии обновления через ajax мне не надо уже обычного обновления. Хотя, мне бы его хотелось оставить - на этапе отладки мне нравится посмотреть результат обновления в браузере. В общем, что-то я сделал не так. Подскажите, пожалуйста, где ошибся.

views.py

Листинг программы
  1. class FrameUpdate(AjaxableResponseMixin, UpdateView):
  2. model = Frame
  3. form_class = FrameUpdateForm
  4. template_name = "general/ajax/ajax_form.html"
  5. def get_success_url(self):
  6. success_url = reverse_lazy("frame:frame_detail_ajax",
  7. kwargs={"pk":self.object.id})
  8. return success_url

frame.js

Листинг программы
  1. function fail(jqXHR, textStatus, errorThrown){
  2. debugger;
  3. }
  4. function post(){
  5. $.ajax({
  6. method: "POST",
  7. url: "http://localhost:8000/frame/2/update/",
  8. data: $("#frame_form").serialize(),
  9. success: show_post,
  10. error: fail
  11. });
  12. }

Решение задачи: «Django, UpdateView, обновление с использованием ajax»

textual
Листинг программы
  1. def runner(request):
  2.     response = 'error'
  3.     if request.method == "GET":
  4.         parser.WORKED = not parser.WORKED
  5.         if parser.WORKED:
  6.             try:
  7.                 parser.run()
  8.             except Exception as e:
  9.                 response = str(e)
  10.             else:
  11.                 response = 'ok'
  12.         else:
  13.             response = 'no'
  14.     return HttpResponse(response, content_type='text/html')

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут