如何解决如何显示表单字段以便用户填写
我正在尝试创建一个表单,用户可以在其中创建团队。我做了视图,模型和表单,但是,以某种方式,模板只返回了一个提交按钮,而我不知道如何解决它。任何帮助都是极大的帮助,谢谢。 这是视图:
def team_create_view(request):
title = 'Create'
form = TeamCreateForm(request.POST or None,request.FILES or None)
coach = get_coach(request.user)
if request.method == 'POST':
if form.is_valid():
form.instance.coach = coach
form.save()
return redirect(reverse("club",kwargs={ 'id': form.instance.id }))
context = {
'title': title,'form': form
}
return render(request,"team_create.html",context)
现在填写表格:
class TeamCreateForm(forms.Form):
form = forms.CharField(widget=forms.Textarea)
class Meta:
model = Team
fields = ('form','name','logo','birth','coach','players')
模型:
class Team(models.Model):
name = models.CharField(max_length=200)
logo = models.ImageField(default="",blank=True,null=True)
birth = models.DateField(default="",null=True)
coach = models.ForeignKey(User,on_delete=models.CASCADE,default="",null=True)
players = models.ManyToManyField(User,related_name='players')
def __str__(self):
return self.name
最后是表格:
解决方法
您将表单呈现器写入POST方法条件中。因此在GET方法中无法呈现。请尝试执行此操作。
第一种方法
在这里,我们只是将render
代码更改为检查POST
条件的if
方法之外。
def team_create_view(request):
title = 'Create'
form = TeamCreateForm(request.POST or None,request.FILES or None)
coach = get_coach(request.user)
if request.method == 'POST':
if form.is_valid():
form.instance.coach = coach
form.save()
return redirect(reverse("club",kwargs={'id': form.instance.id }))
context = {'title': title,'form': form}
return render(request,"team_create.html",context)
第二种方法
在这里,我们检查是否有GET
方法。
def team_create_view(request):
title = 'Create'
form = TeamCreateForm(request.POST or None,kwargs={'id': form.instance.id }))
elif request.method == "GET":
context = {'title': title,context)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。