django新手。遇到ModelForm问题

时间:2009-09-13 16:34:23

标签: python django

我正在尝试编写一个非常简单的django应用程序。我无法让它在我的模板中显示我的表单。

<form ...>
{{form.as_p}}
</form>

它绝对没有显示。如果我添加一个提交按钮,它只显示。

我是否必须声明一个继承自forms.Form的表单对象?不能用ModelForms完成吗?

[UPDATE]解决了! (为浪费你的时间道歉)

在我的网址文件中,我有:

(r'login/$',direct_to_template,   {'template':'register.html'}

切换到:

(r'login/$','portal.views.register')

是的,我觉得很糟糕。

背景:

我有一个学生模型,我有一个注册页面。访问时,它应显示一个询问学生姓名的文本字段。如果学生完成该字段,则将其保存。

#models.py

class Student(models.Model):
   name = models.CharField(max_length =50)

#forms.py
class StudentForm (forms.ModelForm):
   class Meta:
       model = Student

所以,这是我的观点:

def register(request):                                                                                                                                   
          if request.method == 'POST':
                  form = StudentForm(request.POST)
                  if form.is_valid():
                          form.save()
                          return render_to_response('/thanks/')
          else:

                  student = Student()
                  form = StudentForm(instance =student)

          return render_to_response('register.html',{'form':form})

1 个答案:

答案 0 :(得分:2)

问题出在你看来。您将没有要从数据库中检索的现有学生对象。以下代码示例将帮助您实现“创建”视图。

作为旁注,您可能希望使用direct_to_template通用视图功能来让您的生活更轻松。

def add_student(request):
    if request.method == 'POST':
      form = StudentForm(request.POST)
      if form.is_valid():
        new_student = form.save()

        return HttpResponseRedirect('/back/to/somewhere/on/success/')
    else:
      form = StudentForm()

    return direct_to_template(request,
                              'register.html',
                              {'form':form})