我正在尝试编写一个非常简单的django应用程序。我无法让它在我的模板中显示我的表单。
<form ...>
{{form.as_p}}
</form>
它绝对没有显示。如果我添加一个提交按钮,它只显示。
我是否必须声明一个继承自forms.Form的表单对象?不能用ModelForms完成吗?
在我的网址文件中,我有:
(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})
答案 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})