我想自定义GAE在使用其Django版本时所做的默认表单模板渲染。我在GAE中使用Django 1.3。
我有一个"输入"加载应用引擎模板并调用"参数"的页面定义表单输入的模块。以下是呈现表单的输入页面的中间位置:
html = html + template.render(templatepath + '04input_start.html', {})
html = html + str(model_parameters.ModelInp())
这是model_parameters.ModelInp():
class ModelInp(forms.Form):
activeIngredient = forms.CharField(widget=forms.Textarea (attrs={'cols': 20, 'rows': 1}), label='Active Ingredient')
expDuration = forms.ChoiceField(required=True, label='Exposure Duration', choices=expDuration_CHOICES, initial='Intermediate-Term')
结果是一个HTML表单,其中上面的每个变量都是表行,标签为1列,CharField / ChoiceField为另一列。基本上:
<tr>
<th>
<label for="id_activeIngredient">Active Ingredient:</label>
</th>
<td>
<textarea rows="1" cols="20" name="activeIngredient" id="id_activeIngredient"></textarea>
</td>
</tr>
<tr>
<th>
<label for="id_expDuration">Exposure Duration:</label>
</th>
<td>
<select name="expDuration" id="id_expDuration">
<option value="0">Short-Term</option>
<option value="1">Intermediate-Term</option>
<option value="2">Long-Term</option>
</select>
</td>
</tr>
我如何在自定义Django模板中渲染此表单,以便以简单的2列默认格式以外的其他格式格式化表单?
答案 0 :(得分:1)
GAE没有做任何&#34;默认模板渲染&#34;。这都是Django。
你在视图中的片段中做了非常奇怪的事情。模板的重点是在模板中构建整个HTML页面。为什么要在视图中将不同的HTML连接在一起?这违背了使用模板的目的。
您应该将实例化的表单传递给模板上下文,而不是简单地连接模板的字符串表示。然后,您可以遍历其字段,或单独指定它们,以便您可以将它们包装在您喜欢的任何布局中。这些都在displaying a form in a template的Django文档中得到了很好的讨论。