把我的Django表单放到HTML中

时间:2015-12-01 02:50:18

标签: python html django django-forms django-templates

我正在尝试创建一个供用户选择的成员ID下拉列表。我在 forms.py 中创建了一个名为 SelectForm 的表单:

from .models import Member
from django import forms 

class MemberForm(forms.ModelForm):
    class Meta:
        model = Member
        fields = '__all__'

class SelectForm(forms.Form):
    memberid = forms.ModelChoiceField(queryset=Member.objects.values_list('member_id', flat=True))

使用视图:

class SelectView(generic.ListView):
  template_name = 'expcore/select_member.html'
  model = Member

  def select_member(request):
    form = SelectForm()
    if request.method == 'POST':
      form = SelectForm(request.POST)
      if form.is_valid():
        return HttpResponseRedirect('/questions/')
    else:
      form = SelectForm()
    return render(request, 'select_member.html', {'form': form}) 

现在,所有HTML给我的是'会员选择:请blablablabla',其中包含与现有会员ID数量相对应的项目符号列表。但是,实际的成员ID不会显示出来;此外,整个事情现在是一个列表格式而不是我想要的下拉菜单。

select_member.html:

{% load staticfiles %}

<title>Member Selection</title>

<h1>Member Selection</h1>

Please select your Member ID from the drop-down menu.

<ul>
{% for member_id in object_list %}
    <li><a href='/member/{{ member.name }}'></a></li>

{% empty %}
    <li>None available.</li>
{% endfor %}
</ul>

我相信我创建的表单应该为我生成一个下拉菜单,但我认为我没有正确的视图/ HTML。你能帮助我吗?

此外 - 会员ID位于我的 models.py:

中的会员类下
class Member(models.Model):
    member_id = models.SlugField(max_length=10)
    def __str__(self):
         return self.name

谢谢。

2 个答案:

答案 0 :(得分:0)

请查看此第三方应用程序:django-crispy-forms。它将使您的生活更轻松。

答案 1 :(得分:0)

在你的模板中:

{% load staticfiles %}

<title>Member Selection</title>

<h1>Member Selection</h1>

Please select your Member ID from the drop-down menu.

<!-- Form -->
<form method="POST" action="your_view">
{{ form }}
</form

<ul>
    {% for member_id in object_list %}
        <li><a href='/member/{{ member.name }}'></a></li>

        {% empty %}
        <li>None available.</li>
    {% endfor %}
</ul>