【问题标题】:Form data is storing in database when using jQuery使用 jQuery 时,表单数据存储在数据库中
【发布时间】:2016-09-30 19:47:49
【问题描述】:

当下拉列表的值发生变化时,我试图使用 jquery 加载表单。它加载表单但提交数据后未存储在数据库中。它只是刷新页面。

forms.py

class accountForm(forms.ModelForm):
    choice = (
        ('payment type','payment type'),
        ('paypal', 'paypal'),
        ('payeer', 'payeer'),
        ('payza', 'payza'),
        ('bitcoin', 'bitcoin'),
        )
    payment_type = forms.ChoiceField(choices = choice, widget = forms.Select(attrs = {'class':'forms-control'}))
    email = forms.EmailField(widget = forms.EmailInput(attrs={'class':'form-control'}))
    bitcoin = forms.CharField(widget = forms.TextInput(attrs = {'class':'form-control'}))
    amount = forms.IntegerField(widget = forms.NumberInput(attrs = {'class':'form-control'}))

    class Meta:
        model = payments
        fields = [
            "payment_type",
            "email",
            "bitcoin",
            "amount",

        ]

views.py

def payment(request, username):
    form = accountForm(request.POST or None)
    if form.is_valid():
        print(form)
        form.save(commit = False)
        form.save()
        return HttpResponseRedirect('/accounts/profile/')
    context = {'form':form}
    return render(request, 'payment.html', context)

payment.html

<div class="panel-body">
                      <div class="tab-content">
                        <div class="tab-pane active" id="home">
                          <div class="panel-body" id="panel">
                            <div class="form-group">
                              <h4 class="text-primary">Select Withdrawal Type</h4>
                              {{ form.payment_type }}
                            </div>
                          </div>
                          <div class="panel-body">
                            <form  method="POST" id="form" enctype='multipart/form-data'>
                            {% csrf_token %}

                            </form>
                          </div>
                        </div>
                      </div>
                    </div>

jquery

<script type="text/javascript">
  $('select').on('change', function (e) {
    var Selected = $("option:selected", this);
    var valueSelected = this.value;
    console.log(valueSelected);
    if (valueSelected == 'paypal') {
      $("#panel").change(function (e) {
            $("#panel").empty();
            // $('#form').append('{% csrf_token %}');
            $('#form').append('<label>email</label>');
            $('#form').append('{{ form.email }}');
            $('#form').append('{{ form.amount }}');
            $('#form').append('<button class="btn btn-primary btn-default">submit</button>');

        })
    }
  });
</script>

【问题讨论】:

    标签: jquery python django django-forms django-views


    【解决方案1】:

    forms.save() 的实现在哪里?描述如何在表单模型中实现 save()。它可能在某个地方,或者如果您使用 Amazon AWS 和botto 等任何服务作为界面,问题也可能在这两个地方。

    显然您只打印了表单并且您正在使用 HttpResponseRedirect,这就是您的表单被打印并重新加载您的个人资料页面的原因。

    【讨论】:

    • 每个 ModelForm 默认都有一个 save() 方法。我正在使用默认的 save() 方法。
    • 如果 HttpResponseRedirect 正常工作,那么它会将我重定向到另一个页面
    • 好的,您可以粘贴您正在使用的保存方法吗?一种可能性是问题可能存在。
    猜你喜欢
    • 2021-10-11
    • 2014-07-21
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多