我有一个自定义表单,每当我获取表单值以保存在数据库中时,它显示错误(applicationform()得到一个意外的关键字参数'job_title')并且值不会保存在表中。
views.py: -
def applicationvalue(request):
if request.method == 'POST':
getjobtitle = request.POST['jobtitle']
getintable = applicationform(job_title=getjobtitle)
getintable.save()
print getjobtitle
return HttpResponse(getintable)
else:
return render_to_response('registration/applicationform.html')
我的表格是: -
<form method="POST" action="#" class="form-horizontal" id="applicationform" name="appform">
<input type="text" id="u_jobtitle" class="input-xlarge" name="jobtitle" value=" " />
<button class="btn btn-gebo" type="submit" name="usubmit">Save changes</button>
每当我从表单中获取值以保存表字段“job_title”中的值时,它将显示错误: -
applicationform()得到了一个意外的关键字参数'job_title'
答案 0 :(得分:2)
将html中的input
字段名称更改为job_title
<input name="job_title" type="text" id="u_jobtitle" class="input-xlarge" value=" " />
-------------^ changed
然后在视图中执行
def applicationvalue(request):
if request.method == 'POST':
#Dont need this
#getjobtitle = request.POST['jobtitle']
#---------------------------Use request.POST
getintable = applicationform(request.POST)
getintable.save()
print getjobtitle
return HttpResponse(getintable)
else:
return render_to_response('registration/applicationform.html')
如果你使用相同的表格来渲染html而不是手工编码会更好。
答案 1 :(得分:2)
applicationform
构造函数应该以{{1}}为参数。
但在我看来,你并没有以“正确”的方式使用django表单。我认为你的观点不遵循django使用形式的哲学。
在你的情况下,你应该有一个模型:
request.POST
基于此模型,您可以声明ModelForm:
from django.db import models
class Application(models.Model):
job_title = models.CharField(max_length=100)
然后您可以在视图中使用此表单
from django import forms
from .models import ApplicationModel
class ApplicationForm(forms.ModelForm):
class Meta:
model = ApplicationModel
fields = ('job_title',)
最后你应该有一个def applicationvalue(request):
if request.method == 'POST':
form = ApplicationForm(request.POST)
if form.is_valid():
#This is called when the form fields are ok and we can create the object
application_object = form.save()
return HttpResponse("Some HTML code") # or HttResponseRedirect("/any_url")
else:
form = ApplicationForm()
#This called when we need to display the form: get or error in form fields
return render_to_response('registration/applicationform.html', {'form': form})
模板,例如:
registration/applicationform.html
我希望它有所帮助