【问题标题】:Django, access html form field value sent from JQuery AJAXDjango,访问从 JQuery AJAX 发送的 html 表单字段值
【发布时间】:2018-05-22 12:37:19
【问题描述】:

表格:

class TransactionForm(forms.ModelForm):     
    CHOICES = ((1, 'Buy'), (2, 'Sell'),)

    coin = forms.ModelChoiceField(queryset = Coin.objects.all()) 
    buysell = forms.ChoiceField(choices = CHOICES)

    field_order = ['buysell', 'coin', 'amount', 'trade_price']

    class Meta:
        model = Transaction
        fields = {'buysell', 'coin', 'amount', 'trade_price'}

    def __init__(self, coin_price = None, user = None, *args, **kwargs):
        super(TransactionForm, self).__init__(*args, **kwargs)
        print("Transaction form init: ", user, coin_price)

        if user:
            self.user = user
            qs_coin = Portfolio.objects.filter(user = self.user).values('coin').distinct()
            print("qs_coin test: {}".format(qs_coin))
            self.fields['coin'].queryset = qs_coin

        if coin_price:
            print("coin price test")
            self.coin_price = coin_price
            self.fields['price'] = self.coin_price

jquery sn-p:

    $('#id_buysell').on('change', function(){

            console.log("buysell");
            console.log($('#id_buysell').val());

            var $formData = $(this).attr("id_buysell");
            console.log($formData.val());

            $.ajax({
                method: "GET",
                url: "/myportfolio/add_transaction",
                data: $formData,
            });

        });

    $('#id_coin').on('change', function(){

        console.log("coin change")

        var $formData = $(this).attr("id_coin");
        console.log($formData.val());

        $.ajax({
            method: "GET",
            url: "/myportfolio/add_transaction",
            data: $formData,
        });

    });

查看sn-p

def add_transaction(request):
    print(request.method)
    print("test1")

    print(request.GET)

    if request.method == "GET":
        if request.is_ajax():
            print("ajax test")

            data = {
                'test': "test1"
            }

            form = TransactionForm(user = request.user, coin_price = GetCoin("Bitcoin").price)

            return JsonResponse(data)

在我的 jquery 函数中我声明了

var $formData = $(this).attr("id_coin");

然后使用 GET 将其传递给视图。但是,我不确定如何在我看来实际获取这些数据。

那么我怎样才能访问这个值呢?如果我想打印它来查看这个值,我可以做这样或类似的事情吗?:

打印(request.GET['coin'])

【问题讨论】:

    标签: jquery ajax django django-views


    【解决方案1】:

    你不能通过 ajax 那样发送数据,你需要像下面这样发送 {key:'value',key2:'value2'}

    var coin = $(this).attr("id_coin");
    
    $.ajax({
        method: "GET",
        url: "/myportfolio/add_transaction",
        data: {
            id_coin:coin // retrrieve the value in python with the key
        },
    });
    

    在你看来:

    print(request.GET.get('coin'))
    >>> # The value of coin from JS ajax
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2014-11-09
      • 2010-11-17
      • 2022-11-17
      • 1970-01-01
      相关资源
      最近更新 更多