自定义模板

时间:2014-04-23 20:17:06

标签: python django forms google-app-engine

我想自定义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列默认格式以外的其他格式格式化表单?

1 个答案:

答案 0 :(得分:1)

GAE没有做任何&#34;默认模板渲染&#34;。这都是Django。

你在视图中的片段中做了非常奇怪的事情。模板的重点是在模板中构建整个HTML页面。为什么要在视图中将不同的HTML连接在一起?这违背了使用模板的目的。

您应该将实例化的表单传递给模板上下文,而不是简单地连接模板的字符串表示。然后,您可以遍历其字段,或单独指定它们,以便您可以将它们包装在您喜欢的任何布局中。这些都在displaying a form in a template的Django文档中得到了很好的讨论。