【发布时间】:2021-11-15 10:59:44
【问题描述】:
我目前有一个需要提交到数据库的客户详细信息表单。
但是,当我提交表单时,它不会像代码所示那样保存或重定向。而是将所有字段写入页面的 URL 栏。
模型.py:
from django.db import models
class newCustomerClass(models.Model):
customerName = models.CharField("Customer Name",max_length=50 , blank=True)
addressStreetNo = models.CharField(max_length=50 , blank=True)
addressStreet = models.CharField(max_length=50 , blank=True)
addressSuburb = models.CharField(max_length=50, blank=True )
addressCity = models.CharField(max_length=50, blank=True )
addressPO = models.CharField(max_length=50 , blank=True)
contact = models.CharField(max_length=50, blank=True )
mail = models.CharField(max_length=50, blank=True )
CellNo = models.CharField(max_length=50, blank=True )
Forms.py:
from django import forms
from .models import newCustomerClass
from django.forms import ModelForm
class newCustomerForm(ModelForm):
class Meta:
model = newCustomerClass
fields = 'customerName', 'addressStreetNo' ,'addressStreet', 'addressSuburb' ,'addressCity' , 'addressPO' , 'contact' , 'mail' , 'CellNo'
Views.py:
def newCustomer(request):
form = newCustomerForm()
if request.method == 'POST':
form = newCustomerForm(request.POST)
if form.is_valid():
form.save()
return redirect('home')
else:
print(form.errors)
content = {'form':form}
return render(request, 'main/newCustomer.html' , content)
模板.html:
{% extends "main/base.html"%}
{% block content %}
<br>
<div class="container" style="text-align: center">
<form>
{% csrf_token %}
{{ form.non_field_errors }}
{{ form.source.errors }}
{{ form.source }}
<h1 class="h1">New Customer</h1>
<br>
<h5>Customer Name {{ form.customerName }}</h5>
<br>
<h5>Street No {{ form.addressStreetNo }}</h5>
<h5>Street Name {{ form.addressStreet }}</h5>
<h5>Suburb {{ form.addressSuburb }}</h5>
<h5>City {{ form.addressCity }}</h5>
<br>
<h5>Contact {{ form.contact }}</h5>
<h5>E-Mail {{ form.mail }}</h5>
<h5>Cell {{ form.CellNo }}</h5>
<br>
<input type="submit" class="btn btn-success">
</form>
</div>
{% endblock %}
有谁知道是什么原因造成的,我已经尝试了一些字段丢失,并且所有字段都已满,所以我认为表单也无效
【问题讨论】:
-
默认情况下表单执行
GET请求。对于POST,您需要将mathod="post"属性添加到模板中的表单元素。您会在地址栏中看到提交的数据,因为这是在表单使用GET时发生的情况
标签: python django django-models django-forms