无法在数据库中保存表单数据-Django
我正在尝试创建一个简单的表单,将姓名和电子邮件作为用户输入。 但在我提交后,它并没有保存在数据库中 manage.py dumpdata显示[],即空行。 请帮忙 models.py无法在数据库中保存表单数据-Django,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,我正在尝试创建一个简单的表单,将姓名和电子邮件作为用户输入。 但在我提交后,它并没有保存在数据库中 manage.py dumpdata显示[],即空行。 请帮忙 models.py class EmpD(models.Model): name = models.CharField(max_length=100) email=models.CharField(max_length=100) forms.py class SubmitF(forms.ModelForm):
class EmpD(models.Model):
name = models.CharField(max_length=100)
email=models.CharField(max_length=100)
forms.py
class SubmitF(forms.ModelForm):
name = forms.CharField()
email= forms.CharField()
class Meta:
model = EmpD
fileds = '_all_'
views.py
def submit_view(request):
template_name = 'emp/home.html'
redirect_url = 'emp/su.html'
form = SubmitF()
if request.method == 'POST':
form = SubmitF(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(redirect_url)
else:
return render(request, template_name, {'form': form})
def index(request):
return render(request, 'emp/home.html')
包含表单的html:
<form action='' method="post" >
{% csrf_token %}
{{ form }}
<table border="0" cellpadding="5" cellspacing="0">
<tr> <td style="width: 50%">
<label for="Name"><b>First name *</b></label><br />
<input name="Name" type="text" maxlength="50" style="width: 260px" />
</td> <td style="width: 50%">
</td> </tr> <tr> <td colspan="2">
<label for="Email_Address"><b>Email *</b></label><br />
<input name="Email_Address" type="text" maxlength="100" style="width: 535px"
/>
</td> </tr> <tr> <td colspan="2">
<input type="submit" value="Submit Data" />
</td> </tr>
</table>
</form>
建模、单独表单字段和单个表单的3个视图是非常糟糕的方法。 试试这个。定义简单的模型。对于电子邮件输入,定义电子邮件字段,表单本身进行验证 Models.py
class EmpD(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField(null=True, blank=True)
Define forms.py,如果您想包含模型字段,只需fields=''\uuuuuuuuuuuuuuu'
即可,
否则,请在此表单中定义其他字段
forms.py
class SubmitF(forms.ModelForm):
class Meta:
model = EmpD
fields = '__all__'
Simple views.py,若请求方法为Get,则表单呈现,并在Post请求中,将数据传递给服务器
def submit_view(request):
template_name = 'path_to_html'
redirect_url = 'your_url'
form = SubmitF()
if request.method == 'POST':
form = SubmitF(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(redirect_url)
else:
return render(request, template_name, {'form': form})
模板结构
<form action="/your-name/" method="post">
<label for="name">Your name: </label>
<input id="id_name" type="text" name="name" value="{{ current_name }}">
<input type="submit" value="OK">
</form>
你的名字:
建模、单个表单的单独表单字段和3个视图是非常糟糕的方法。
试试这个。定义简单的模型。对于电子邮件输入,定义电子邮件字段,表单本身进行验证
Models.py
class EmpD(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField(null=True, blank=True)
Define forms.py,如果您想包含模型字段,只需fields=''\uuuuuuuuuuuuuuu'
即可,
否则,请在此表单中定义其他字段
forms.py
class SubmitF(forms.ModelForm):
class Meta:
model = EmpD
fields = '__all__'
Simple views.py,若请求方法为Get,则表单呈现,并在Post请求中,将数据传递给服务器
def submit_view(request):
template_name = 'path_to_html'
redirect_url = 'your_url'
form = SubmitF()
if request.method == 'POST':
form = SubmitF(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(redirect_url)
else:
return render(request, template_name, {'form': form})
模板结构
<form action="/your-name/" method="post">
<label for="name">Your name: </label>
<input id="id_name" type="text" name="name" value="{{ current_name }}">
<input type="submit" value="OK">
</form>
你的名字:
请在views.py code中修复缩进并显示您的URL(fileds='\u all'
-->fields='\u all'
)@PRMoureu实际上是fields='\u all'
)请在views.py code中修复缩进并显示您的URL(fileds='\u all'
-->fields='\u all'
)@PRMoureu实际上是fields='\uuuu all\uuuuuu'
:)为什么要添加login\u required
?删除它,不管:)我的意思是,你可以为OP制造新的麻烦,而它在当前版本中不存在logic@Sagar我试过你简单的方法做了所有的改变,但dumpdata仍然显示为空row@Sagar我需要为views.py中定义的submit\u视图创建url模式吗?为什么要添加login\u required
?删除它,不管:)我的意思是,您可以为OP创建新的问题,而它在当前视图中不存在logic@Sagar我试过你简单的方法做了所有的改变,但dumpdata仍然显示为空row@Sagar是否需要为views.py中定义的submit_视图创建url模式?