【问题标题】:form rendering in djangodjango中的表单渲染
【发布时间】:2015-12-30 14:19:57
【问题描述】:

我是 HTML 和 django 的新手 我在 django 中创建了一个表单

existing_rsets = Set.objects.all()
choices_int = tuple((p.name, p.name) for p in existing_rsets)
region_set = forms.ChoiceField(label='Set, widget=forms.Select(attrs={'class':'form-control'}),choices=choices_int,required=False)

如何在模板中呈现表单,然后在代码中获取它。请提供示例代码。

【问题讨论】:

标签: django forms


【解决方案1】:

简单的例子。

1) app/forms.py

from django import forms

class PersonForm(forms.Form):

    GENDER_CHOICES = (
        ('', '----------'),
        ('MALE', 'Male'),
        ('FEMALE', 'Female'),
    )

    MARITAL_STATUS_CHOICES = (
        ('', '----------'),
        ('SINGLE', 'Single'),
        ('MARRIED', 'Married'),
    )

    first_name = forms.CharField(label='First name', max_length=255)
    middle_name = forms.CharField(label='Middle name', max_length=255)
    last_name = forms.CharField(label='Last name', max_length=255)
    gender = forms.ChoiceField(label='Gender', choices=GENDER_CHOICES)
    martial_status = forms.ChoiceField(label='Martial status', choices=MARITAL_STATUS_CHOICES)

2) app/views.py

from django.http import HttpResponseRedirect
from django.shortcuts import render
from .forms import PersonForm

def person(request):

    if request.method == 'POST':
        form = PersonForm(request.POST)

        if form.is_valid():
            form.save(commit=True)
            return HttpResponseRedirect('/some-url/xyz')
    else:
        form = PersonForm()

    context = {
        'form': form,
    }

    return render(request, 'app/templates/person.html', context)

3) app/templates/person.html

{% for field in form.visible_fields %}
    {{ field.label_tag }}
    {{ field }}
    <span style='color:red'>{{ field.errors.as_text }}</span>
{% endfor %}

阅读更多关于 Django 表单的信息here

【讨论】:

  • 感谢您提供详细信息。真的很有帮助
猜你喜欢
  • 2018-11-13
  • 2013-10-10
  • 2018-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 1970-01-01
相关资源
最近更新 更多