使用django在数据库中保存值

时间:2013-08-26 05:12:19

标签: python database django error-handling

我有一个自定义表单,每当我获取表单值以保存在数据库中时,它显示错误(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'

2 个答案:

答案 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

我希望它有所帮助