一尘不染

最初在Django表单上填充

django

我决定学习Django Forms。一段时间以来,我一直在使用HTML表单,因为很难理解Django表单。

如何将初始数据填充到Django Forms?例:

考虑是否填充了这些模型。包含数据。

models.py

class Game(models.Model):
   title = models.CharField()
   genre = models.CharField()

所以如果我有

view.py

game_list = Game.objects.all()
return render_to_response('template',locals())

所以在template.html中,我可以:

{% for game in game_list %}
<p> game.title <p> <br /> <p> game.genre <p>

如果我想在使用HTML表单时填充初始数据,这通常是我要做的:

    {% for game in game_list %}
    <form action= '/add/' method='POST'>
    <input="text" name="title" value="{{game.title}}" />
    <input="text" name="genre" value="{{game.genre}}" />
    <input type="submit" />

如何在Django表单中执行此操作?根据我在网上阅读文章所看到的内容,他们通过使用forms.__init__以下方法来做到这一点:

class Anyforms(forms.Form):
   super(Anyforms, self).__init__(*args,**kwargs)

我无法掌握如何使用进行填充super。表单在运行时获取什么数据,以及如何获取?我可以阅读任何良好的链接来使我在混乱的Django Forms上运行吗?

这是

<input="text" name="title" value="{{game.title}}" /> 
<input="text" name="genre" value="{{game.genre}}" /> 

相当于这个?

data = {'title':'{{game.title}}','genre':'{{game.genre}}'} 
form(data) 

变量将在模板中替换吗?


阅读 409

收藏
2020-03-27

共1个答案

一尘不染

S. Lott的答案告诉你如何使用视图中的一些数据初始化表单。要在模板中呈现表单,请参阅Django文档的以下部分,其中包含许多示例:

将表单输出为HTML
尽管示例显示了使用python解释器进行渲染的工作,但在模板中执行操作却是相同的。

例如,代替print f,你的模板将仅包含:{{ f }}假设你将表单作为上下文传递给上下文f。同样,f.as_p()在模板中以表示{{ f.as_p }}。django模板文档中“ 变量”部分对此进行了描述。

更新(回应评论)

不完全是,模板符号仅用于template。你的表单和相关数据在视图中初始化。

因此,使用你的示例,你的视图将包含以下内容:

def view(request):
    game = Game.objects.get(id=1) # just an example
    data = {'id': game.id, 'position': game.position}
    form = UserQueueForm(initial=data)
    return render_to_response('my_template.html', {'form': form})

然后,你的模板将具有以下内容:

{{ form }}

或者,如果你想自己定制HTML:

{{ form.title }} <br />
{{ form.genre }} <br />

等等。

我建议尝试一下并尝试一下。然后问一个问题,如果你遇到问题。

2020-03-27