在django中手动添加html输入字段的正确方法是什么?

时间:2013-01-26 04:06:18

标签: django django-forms django-templates django-views

我是django新手,来自php世界。我无法想象如何使用django创建项目所需的某些输入字段。所以我手动将这些字段的html添加到模板中。即,我添加了复选框和菜单。在view.py中,我添加了代码以通过request.POST获取用户对复选框和菜单的选择。使用这些选择,我可以修改并保存表单的实例。

一切运作良好。唯一的故障是表单不验证。如果发生这种情况,我需要重新显示表单,并在顶部显示错误消息。所以我调用render来重新显示表单。重新显示的表单丢失了我自定义html的所有选项。即,自定义复选框和菜单被重置,但不是django创建的输入字段。有没有办法保存用户对自定义html的选择?感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用输入with this创建表单 要了解如何使用表单,see here 您可以使用自定义输入use ModelForms

答案 1 :(得分:0)

<强> models.py

class Debt(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=50,
        help_text="Name to identify your debt.")
    due_day = models.PositiveSmallIntegerField(
        help_text="Day of the month payment is due.")

<强> forms.py

class DebtForm(forms.ModelForm):
    class Meta:
        model = Debt

<强> views.py

def add_debt(request):
    if request.method == 'POST':
        form = DebtForm(request.POST)
        if form.is_valid():
            form.save() 
return render(request, 'add_debt.html', {
    'form': DebtForm(),
}) 

<强> add_debt.html

<form method="post">{% csrf_token %}
    {% for field in form %}
        {{field}}<br/>
    {% endfor %}
    <input type="submit" value="Save Debt">
</form>