我决定学习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__以下方法来做到这一点:
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)
变量将在模板中替换吗?
S. Lott的答案告诉你如何使用视图中的一些数据初始化表单。要在模板中呈现表单,请参阅Django文档的以下部分,其中包含许多示例:
将表单输出为HTML 尽管示例显示了使用python解释器进行渲染的工作,但在模板中执行操作却是相同的。
例如,代替print f,你的模板将仅包含:{{ f }}假设你将表单作为上下文传递给上下文f。同样,f.as_p()在模板中以表示{{ f.as_p }}。django模板文档中“ 变量”部分对此进行了描述。
print f
{{ f }}
{{ f.as_p }}
更新(回应评论)
不完全是,模板符号仅用于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 />
等等。
我建议尝试一下并尝试一下。然后问一个问题,如果你遇到问题。