【问题标题】:How to output the input form data with extra model fields Django如何使用额外的模型字段 Django 输出输入表单数据
【发布时间】:2017-12-25 07:45:06
【问题描述】:

我正在寻找一种在提交表单后输出表单输入(在 div 中)的方法。经过大量研究,我找不到解决方案。我想我需要使用 AJAX,但不确定。有没有合适的 Django 方法来完成这项工作,还是我需要使用 AJAX?

AJAX 是这样的吗?

  <script>
  var xhr = new XMLHttpRequest();
  xhr.open('GET', '???');
  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4) {
      document.getElementById('ajax').innerHTML = xhr.responseText;
    }
  };

  function sendAJAX() {
    xhr.send();
  }
  </script>

views.py

def scan_product_view(request):
    if request.method == 'POST':
        form = forms.ScanProductForm(request.POST or None)
        if form.is_valid():
            barcode_input = form.cleaned_data.get("barcode_input")
            amount_input = form.cleaned_data.get("amount_input")
            p = AddProduct.objects.get(barcode=barcode_input)
            p.sold = F("sold") + amount_input
            p.stock_amount = F("stock_amount") - amount_input
            p.save()
            messages.success(request, '%s was successfully scanned' %p.title)
            return HttpResponseRedirect('/scan/')
    else:
        form = forms.ScanProductForm()
    return render(request, 'scanapp/barscan.html', {'form': form})

模板html

{% block content %}

<div class="scan-form-master">
<form method="POST" action="">
    {% csrf_token %}
    <div class="scan-con">      
        <div>
            <div class="scan-form">
            {{ form }}
            <input type="submit" class="btn btn-primary" value="Add">
            </div>
            <div class="conf-btn">  
                <div id="load" onclick="sendAJAX()">
                    <p>* I want to show the input of the above field input here after the client hit the Add button.</p>
                </div>
                <p><input type="submit" class="btn btn-danger" value="Print PDF">
                <input type="submit" class="btn btn-success" value="End session"></p>
            </div>
        </div>
    </div>
</form>
</div>
{% endblock %}

【问题讨论】:

    标签: ajax django django-forms django-queryset


    【解决方案1】:

    据我所知,仅使用 django 并没有一种简单的方法可以做到这一点。我会使用 jquery ajax 提交表单,然后使用响应更新 div。需要一些设置才能让您的 csrf 令牌与 ajax 一起使用。 Django csrf ajax setup。然后使用 JsonResponse 代替 HttpResponseRedirect 将 JSON 发送到前端。

    【讨论】:

    • 谢谢!我会试着从这里弄清楚:-)
    猜你喜欢
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多