首页 > 解决方案 > Django - 努力将输入数据提交到数据库

问题描述

我在将数据从表单发送到我的数据库时遇到了一些问题。

表格:

<form method="POST">
    {% csrf_token %}
    <div class="banner" style="border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px;">
      <h1 style="font-family: 'Baloo Chettan 2', cursive; font-size: 50px;">Title</h1>
    </div>
    <div class="colums" style="padding-left: 8px; padding-top: 20px;">
      <div class="item">
        <label for="i1"> Input One<span>*</span></label>
        <input id="i1" type="text" name="i1" placeholder="Data point 1" required/>
      </div>
      <div class="item">
        <label for="i2"> Input Two<span>*</span></label>
        <input id="i2" type="text" name="i2" placeholder="Data point 2" required/>
      </div>
      <div class="item">
        <label for="i3">Input Three<span>*</span></label>
        <input id="i3" type="text" name="i3" placeholder="Data point 3" required/>
      </div>
      <div class="item">
        <label for="i4">Input Four<span>*</span></label>
        <input id="i4" type="text" name="i4" placeholder="Data point 4" required/>
      </div>
    <div class="btn-block">
      <button type="submit" value="CalcData" style="width: 1052px; align-content: center; background-color: #3E828F;">Calculate</button>
    </div>
</form>

视图.py:

def save_data(request):
    if request.method == 'POST':
        if request.POST.get('i1') and request.POST.get('i2') and request.POST.get('i3') and request.POST.get('i4'):
            data=CalcData()
            data.i1= request.POST.get('i1')
            data.i2= request.POST.get('i2')
            data.i3= request.POST.get('i3')
            data.i4= request.POST.get('i4')
            data.save()

            return render(request, 'home.html')  

    else:
        return render(request,'home.html')

模型.py:

class CalcData(models.Model):
    i1 = models.DecimalField(max_digits = 100, decimal_places = 5)
    i2 = models.DecimalField(max_digits = 100, decimal_places = 5)
    i3 = models.DecimalField(max_digits = 100, decimal_places = 5)
    i4 = models.DecimalField(max_digits = 100, decimal_places = 5)
    datetime = models.DateTimeField(default=timezone.now)

这个 POST 不会出现在我的数据库中,所以我不确定它的去向。我会假设问题出在我的视图代码中,但我不确定在哪里。

标签: djangodjango-viewsdjango-forms

解决方案


在表单中添加操作并添加 url。像这样:

<form method="post" action="{% url 'YOUR_APP_NAME: save_data' %}">

推荐阅读