Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 2
Регистрация: 01.01.2015
Сообщений: 96

Неверная передача данных из jQuery

25.04.2017, 15:50. Показов 681. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Проблема в том, что JQuery видит data-product_alias = "{{ product.alias }}" нормаль, берёт из БД(Items), а когда передаю в БД(ProductInBasket) из JQuery передаётся, что-то не то - если в функции basketAddingпишу print(data.get('product_alias')) он принтит - tea
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<div id="money_tea_te">
                                    <form id="buy" action="{% url 'basketAdding' %}">{% csrf_token %}
                                        <div class="slect_mass" id="select_mass">
                                            <select name="price_prod" id="weight">
                                                <option value="50">50 гр</option>
                                                <option value="100">100 гр</option>
                                                <option value="200">200 гр</option>
                                                <option value="300">300 гр</option>
                                                <option value="400">400 гр</option>
                                                <option value="500">500 гр</option>
                                                <option value="1000">1000 гр</option>
                                            </select>
                                        </div>
 
                                        <input type="submit" id="submit_buy" class="submit_buy" name="submit_buy"
                                               value="В корзину" data-product_alias = "{{ product.alias }}" data-product-name = "{{ product.name }}"
 
                                        data-product-price = "{{ product.price }}">
                                        <input type="submit" id="one_buy" class="one_buy" name="one_buy"
                                               value="Купить в один клик">
                                        <input type="image" id="favorite" class="to_fav" name="submit_fav"
                                               title="В избранное" src="{% static 'res/img/star.png' %}">
                                    </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
var buy_form = $('#buy');
    buy_form.on('submit', function (def) {
        def.preventDefault();
        console.log('123');
        var mass = $('#weight').val();
        var submit_btn = $('#submit_buy');
        var product_alias = submit_btn.data('product_alias');
        var product_name = submit_btn.data('product-name');
        var product_price = Math.round(submit_btn.data('product-price') * mass / 100);
        var data = {};
 
        data.product_alias = product_alias;
        data.mass = mass;
        data.name = product_name;
        data.price = product_price;
        var csrf_token = $('#buy [name="csrfmiddlewaretoken"]').val();
        data["csrfmiddlewaretoken"] = csrf_token;
 
        var url = buy_form.attr('action');
        console.log(data);
        $.ajax({
            url: url,
            type: 'POST',
            data: data,
            cache: true,
            success: function (data) {
                console.log('ok');
                console.log(data.proTotalNumb)
            },
            error: function () {
                console.log('error');
            }
        })
    });
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Items(models.Model):
    name = models.CharField(max_length=15, verbose_name='Название товара', default='')
    price = models.IntegerField(default=0, verbose_name='Цена')
    # image = models.CharField(max_length=255, verbose_name='Картинка', default='')
    image = models.ImageField(null=True, blank=True, upload_to='image/', verbose_name='Изображение')
    alias = models.SlugField(verbose_name='Alias товара', default='')
    rating = models.FloatField(default=0, verbose_name='Рейтинг')
 
    def absoluteUrl(self):
        return '{}'.format(self.alias)
 
    class Meta:
        verbose_name = "Товар"
        verbose_name_plural = "Товары"
 
    def __str__(self):
        return 'Товар %s' % self.name
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class ProductInBasket(models.Model):
    session_key = models.CharField(max_length=128, blank=True, null=True, default=None)
    order = models.ForeignKey(Order, blank=True, null=True, default=None)
    product = models.ForeignKey(Items, blank=True, null=True, default=None)
    is_active = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)
 
    def __str__(self):
        if(self.product):
            return '%s' % self.product.name
        else:
            return '%s' % self.id
 
    class Meta:
        verbose_name = 'Товар в корзине'
        verbose_name_plural = 'Товары в корзине'
И самое главное -
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def basketAdding(request):
    return_dict = dict()
    session_key = request.session.session_key
    data = request.POST
    print(request.POST)
    product_alias = data.get('product_alias')
    productMass = data.get('mass')
    productName = data.get('product_name')
    productPrice = data.get('price')
 
    new_product = ProductInBasket.objects.create(session_key=session_key, product_alias=product_alias) #если строку убарть в консоле ошибки нет, но и в БД естественно ничего не добавляется
    proTotalNumb = ProductInBasket.objects.filter(session_key=session_key, is_active=True).count()
    return_dict['proTotalNumb'] = proTotalNumb
    return JsonResponse(return_dict)
В консоли браузера при возове формы сначала пишет - Object {product_alias: "ivan-tea", mass: "50", name: "Иван чай", price: 229, csrfmiddlewaretoken: "rtGnQewuj6kZPSoxI4uxDH1F9YxCxylALLNLbbO k0XxB8xZR3hqGEfYcTn8HcYqA"}
Потом - POST http://127.0.0.1:8000/basketAdding 500 (Internal Server Error)
error

В PyCharm - TypeError: 'product_alias' is an invalid keyword argument for this function.
В чём может быть проблема?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.04.2017, 15:50
Ответы с готовыми решениями:

Неверная передача данных в словарь
Прога ищет значение по ключу (наименование родственника), если такого ключа нет, то спрашивает у пользователя ключ, значение и добавляет в...

неверная передача данных между перменными
Добрый день. Может в честь первого апреля. Может ещё почему, а может я просто болен и не замечаю очевидного. Суть проблемы. ...

передача данных с api.yandex.ru. неверная кодировка.
встроил крипт для отображения объектов на карте яндекс &lt;script...

1
0 / 0 / 2
Регистрация: 01.01.2015
Сообщений: 96
28.04.2017, 18:54  [ТС]
Сделал благодаря - Kifsif. Теперь выглядит так -
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def basketAdding(request):
    return_dict = dict()
    session_key = request.session.session_key
    data = request.POST
    print(request.POST)
    product_alias = data.get('product_alias')
    productMass = data.get('mass')
    productName = data.get('name')
    productPrice = data.get('price')
 
 
    new_product = ProductInBasket.objects.create(session_key=session_key, product=Items.objects.get(alias=product_alias), mass=productMass, name=productName, price=productPrice)
 
    proTotalNumb = ProductInBasket.objects.filter(session_key=session_key, is_active=True).count()
    return_dict['proTotalNumb'] = proTotalNumb
    return JsonResponse(return_dict)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class ProductInBasket(models.Model):
    session_key = models.CharField(max_length=128, blank=True, null=True, default=None)
    order = models.ForeignKey(Order, blank=True, null=True, default=None)
    product = models.ForeignKey(Items, blank=True, null=True, default=None)
    name = models.CharField(max_length=20, blank=True, null=True, default=None)
    mass = models.IntegerField(default=0, verbose_name='Вес')
    price = models.IntegerField(default=0, verbose_name='Цена')
    is_active = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)
 
    def __str__(self):
        if(self.product):
            return '%s' % self.product.name
        else:
            return '%s' % self.id
 
    class Meta:
        verbose_name = 'Товар в корзине'
        verbose_name_plural = 'Товары в корзине'
Но в админ-панели поле PRODUCT отображается не корректно. В БД alias = ivan-tea. Название меняется из-за:
Python
1
2
    def __str__(self):
        return 'Товар %s' % self.name
в Items

Как сделать что-бы было не 'Товар Иван чай', а ivan-tea.
Миниатюры
Неверная передача данных из jQuery  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2017, 18:54
Помогаю со студенческими работами здесь

Передача данных в JQuery
Как передавать данные из текстового поля Edit в поле отображения текста Memo через кнопку button. в JQuery, как такое реализовать. Опыта в...

Jquery+ Asp.net Передача данных в БД
Доброго всем времени суток. Нужна помощь с взаимодействием сайта с бд посредством jquery. Вот что есть щас: Всплывающее окно Dialog с...

MVC3 JQuery Ajax передача JSON данных от клиента серверу
Код на клиенте $.ajax({url:'@Url.Action( &quot;Index&quot; )', type:'POST', ...

Неверная передача типа
Выходит ошибка Expected edition; ...

Неверная передача значения
Есть typedef enum {a, b, c, d} my; есть функция void MyF(my x) ее вызов в виде MyF(0); MyF(a); работает нормально А...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru