Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python: Django
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
nxexox
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 48
1

Django + Ajax. Правильно ли я составил запрос?

18.11.2015, 14:55. Просмотров 1051. Ответов 2

Добрый день уважаемые форумчане. Прошу помидорами не кидать, только учусь. Проблема с ajax запросами. Точнее, как я понимаю они теряются или не туда уходят. Т.к. при успехе у меня JS перезагружает страницу, она перезагружается, т.е. скрипт выполняется и отправляет. А вот запись в БД не изменяется.
CRM мое приложение по адресу {{url}}/crm лежит. И в нем уже есть подвкладки, т.е. {{url}}/crm/my_work это путь вкладки, которую я скинул сюда. Объясните пожалуйста что к чему, и с полным примером кода или исправлением моего пожалуйста, что бы мне разобраться. Прикрепляю код:

views.py
Python
1
2
3
4
5
6
7
8
9
10
11
def NBEdit(request):
    if request.method == "POST" and request.is_ajax():
        MD = MyDela(
            pk=request.POST.get("id", ""),
            name=request.POST.get("name", "")[:250],
            information=request.POST.get("info", "")
        )
        MD.save()
        return HttpResponse("ok")
    else:
        return HttpResponse("bad")
models.py
Python
1
2
3
4
5
6
7
8
class MyDela(models.Model):
    name = models.CharField(max_length=250)
    kr_info = models.CharField(max_length=300)
    date_firstly = models.DateTimeField(auto_now_add=True)
    date_edit = models.DateTimeField(auto_now=True)
    information = models.TextField()
    status = models.IntegerField()
    user = models.ForeignKey(User)

urls.py моего приложения, НЕ ПРОЕКТА ЦЕЛИКОМ
Python
1
2
3
4
5
6
urlpatterns = patterns('',
    # ex: /cab Klients/
    url(r'^$', views.main, name='crm_main'),
    url(r'^my_work/new', views.ValidLoginMain, name='crm_new_NB'),
    url(r'^my_work/newNB/', views.NBEdit, name='crm_NBEdit'),
)


n_b_new.html
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
    <div class="new_notebook">
        <form method="POST">
        {% csrf_token %}
            <div class="new_head_notebook" id="name" contentEditable="true">
                {{MD.name}}
            </div>
            <div class="save"><input id="save" type="button" value="Сохранить" onclick = "zapros();"/></div>
            <div class="new_information_notebook" id="information" contentEditable="true">
                {{MD.information}}
            </div>
            <div style="display:none" id="pk">{{MD.id}}</div>
        </form>
    </div>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
    <script>
function zapros() {
//
    var name = document.getElementById("name").innerHTML;
    var info = document.getElementById("information").innerHTML;
    var id = document.getElementById("pk").innerHTML;
//
// Если поля заполнены, отправляем их значения
    if (true) {
        $.ajax({
            url: "{{url}}/crm/my_work/newNB/",
            type: 'POST',
            dataType:"html",
            data: {
                "name": name,
                "info": info,
                "id": id,
            },
            error: function() {
                alert('Ошибка получения запроса');
            },
// При успехе очищаем поля и меняем кнопочку
            success: function(data) {
             location.reload(); // для проверки, что скрипт работает
            },
// CSRF механизм защиты Django
            beforeSend: function(xhr, settings) {
                console.log('-------------before send--');
                function getCookie(name) {
                    var cookieValue = null;
                    if (document.cookie && document.cookie != '') {
                        var cookies = document.cookie.split(';');
                        for (var i = 0; i < cookies.length; i++) {
                            var cookie = jQuery.trim(cookies[i]);
                            // Does this cookie string begin with the name we want?
                        if (cookie.substring(0, name.length + 1) == (name + '=')) {
                            cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                            break;
                        }
                    }
                }
                return cookieValue;
                }
                if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
                    // Only send the token to relative URLs i.e. locally.
                    xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
                }
            }
        });// ajax
    }
    return false;
};
</script>
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2015, 14:55
Ответы с готовыми решениями:

Как правильно отправлять запрос из вне в django?
Добрый вечер! Подскажите пожалуйста. Всю голову сломал, весь гугл перерыл. Все что смог найти это...

Django ORM запрос с подзапросом или переведите SQL в запрос Django ORM
В общем весь вопрос был в заголовке! Есть запрос на SQL он работает нормально вот только не знаю...

Django and ajax
Пытаюсь изучать ajax на примере магазина написанного на django, реализовываю асинхронное добавление...

Django ajax
Всем добрый вечер! Прошу у вас информации о том как взаемодействует Django и ajax post запросы. Не...

JQuery Ajax+Django
Подскажите, пожалуйста как в Django реализовывается метод $.post. На php это реализуется так Я...

2
ivlevdenis
21 / 34 / 14
Регистрация: 23.07.2014
Сообщений: 148
20.11.2015, 03:51 2
Ну так логгируй, смотри в каком месте не отрабатывает. Создание новой сущности не полное, не все поля назначаются, pk не нужно присваивать!
0
nxexox
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 48
20.11.2015, 12:29  [ТС] 3
PK для того, что бы не добавлять в БД, а изменить запись. Я меняю в бд готовую запись.
И не полное потому же
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2015, 12:29

Django, UpdateView, обновление с использованием ajax
Django 1.10. jquery-3.1.0 Решил сделать обновление данных через ajax. В общем, получаю чистое...

Ошибка при отправке AJAX-запроса в Django
Привет всем! Отправляю AJAX-запрос: &lt;script&gt;//AJAXQuestSave; ...

Django mongo ajax datatable как связать все
views.py def ajaxjson(request): testdata = ‘’ testdata = testdata.replace(', ]',']') return...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru