首页 > 解决方案 > 在 Django mysql 中提交表单时出现值错误

问题描述

在 Django 中提交表单时出现值错误。我已成功连接 XAMPP 中的 MySQL 数据库。我找不到解决方案。这是我的表单代码,

     <form class="user" method="POST">
                {% csrf_token %}
                <div class="form-group">
                  <input type="text" class="form-control form-control-user" id="Cus_name" name="Cus_name" placeholder="Enter Customer Name...">
                </div>
                <div class="form-group">
                  <input type="text" class="form-control form-control-user" id="Cus_address" name="Cus_address" placeholder="Enter Address... ">
                </div>
                 <div class="form-group">
                  <input type="email" class="form-control form-control-user" id="Cus_email"  placeholder="Enter Email Address...">
                </div>
                 <div class="form-group">
                  <input type="text" class="form-control form-control-user" id="Purpose"  placeholder="Enter Purpose...">
                </div>
                 <div class="form-group">
                  <input type="date" class="form-control form-control-user" id="Date"  placeholder="Enter Date...">
                </div>
                 <div class="form-group">
                  <input type="time" class="form-control form-control-user" id="Time" placeholder="Enter Time...">
                </div>
                 <div class="form-group">
                  <input type="text" class="form-control form-control-user" id="Venue" placeholder="Enter Venue...">
                </div>
                <button name="submit" type="submit" class="btn btn-success">Submit</button>
                <hr>
             </form>

这是我的 Views.py

from django.shortcuts import render
from .models import AppointmentDet
from django.contrib import messages

def InsertDetails(request):
    if request.method == 'POST':
        if request.POST.get('Cus_name') and request.POST.get('Cus_address') and request.POST.get('Cus_email') and request.POST.get('Purpose') and request.POST.get('Date') and request.POST.get('Time') and request.POST.get('Venue'):
            saverecord = AppointmentDet()
            saverecord.Cus_name = request.POST.get('Cus_name')
            saverecord.Cus_name = request.POST.get('Cus_address')
            saverecord.Cus_name = request.POST.get('Cus_email')
            saverecord.Cus_name = request.POST.get('Purpose')
            saverecord.Cus_name = request.POST.get('Date')
            saverecord.Cus_name = request.POST.get('Time')
            saverecord.Cus_name = request.POST.get('Venue')
            saverecord.save()
            messages.success(request, "details saved successfully!")
            return render(request, "appform.html")
    else:
            return render(request, "appform.html") 

这是我在运行服务器时遇到的错误。

ValueError at / 视图 Management.views.InsertDetails 未返回 HttpResponse 对象。它返回 None 。

我尝试了一些解决方案,但没有奏效。

标签: pythonmysqldjangoforms

解决方案


你应该阅读这个关于如何使用表单的小教程:

https://docs.djangoproject.com/en/3.1/topics/forms/

发送数据时,您应该首先将帖子转换为表单类对象。然后你必须在所述表格上调用“is_valid()”。

只有在此方法调用后,post 数据才会在对象中。

这是来自 django 的示例:

def get_name(request):
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = NameForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            # process the data in form.cleaned_data as required
            # ...
            # redirect to a new URL:
            return HttpResponseRedirect('/thanks/')
    # if a GET (or any other method) we'll create a blank form
    else:
        form = NameForm()
    return render(request, 'name.html', {'form': form})`

推荐阅读