2

我有一个自定义表单,每当我获取要保存在数据库中的表单值时,它都会显示错误( applicationform() 得到了一个意外的关键字参数 'job_title' )并且这些值没有保存在表中。

视图.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”

4

2 回答 2

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 而不是手动编码它会更好。

于 2013-08-26T05:29:13.260 回答
2

构造applicationform函数应采用request.POSTas 参数。但在我看来,您没有以“正确”的方式使用 django 表单。我认为您的观点不遵循 django 使用表单的哲学。

在您的情况下,您应该有一个模型:

from django.db import models

class Application(models.Model):
    job_title = models.CharField(max_length=100)

基于这个模型,你可以声明一个 ModelForm:

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类似的模板:

{% extends "base.html" %}

{% block content %}
<form action="" method="post">{% csrf_token %}
   <table>
      {{form.as_table}}
   </table>
   <input type="submit" value="Add">
</form>
{% endblock %}

我希望它有帮助

于 2013-08-26T05:52:12.013 回答