Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django新手。在使用ModelForm时遇到问题_Python_Django - Fatal编程技术网

Python django新手。在使用ModelForm时遇到问题

Python django新手。在使用ModelForm时遇到问题,python,django,Python,Django,我正在尝试编写一个非常简单的django应用程序。我无法让它在我的模板中显示我的表单 <form ...> {{form.as_p}} </form> 切换到: (r'login/$','portal.views.register') 是的,我感觉糟透了 背景: 我有一个学生模型,我有一个注册页面。当它被访问时,它应该显示一个文本字段,询问学生姓名。如果学生填写了该字段,则会将其保存 #models.py class Student(models.Model):

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

<form ...>
{{form.as_p}}
</form>
切换到:

(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})

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

作为补充说明,您可能希望使用direct_to_模板通用视图功能使您的生活更轻松

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})

创建新学生不需要传递实例。我不确定这是否是导致表单无法工作的原因,但这肯定是不必要的。我的缺点:我在我的url.py文件中使用了direct_to_模板功能,谢谢大家!谢谢,但是在我第一次访问URL时表单仍然没有显示。不过我会看看你的建议。
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})