Django Form Field没有出现

时间:2017-03-08 22:37:11

标签: python django forms templates

我刚刚开始学习Django,对于这个项目,我正在关注“Tango with Django”教程。我有一个问题,表单的输入字段没有显示,而按钮似乎很好。

这是我的代码:

models.py

[...]
class Idea(models.Model):
    keyword = models.ForeignKey(Keyword)
    word = models.CharField(max_length=120)
    count = models.IntegerField(default=1)

    def __str__(self):
        return self.word

forms.py

[...]
class Meta:
    model = Keyword
    fields = ('name',)

class IdeaForm(forms.ModelForm):
    word = forms.CharField(max_length=120)
    count = forms.IntegerField(widget=forms.HiddenInput(), initial=1)

    class Meta:
        model = Idea
        fields = ('word',)
        exclude = ('keyword',)        

views.py

[...]
def keyword_detail(request, keyword_name_slug):
    form = IdeaForm()
    context_dict = {}

    try:
        keyword = Keyword.objects.get(slug=keyword_name_slug)
        ideas = Idea.objects.filter(keyword=keyword)

        context_dict['keyword'] = keyword
        context_dict['ideas'] = ideas

    except Keyword.DoesNotExist:
        context_dict['keyword'] = None
        context_dict['ideas'] = None

    if request.method == 'POST':
        form = IdeaForm(request.POST)
        if form.is_valid():
            idea = form.save(commit=False)
            idea.keyword = keyword
            idea.count = 1
            idea.save()
            return keyword_detail(request, keyword_name_slug)
        else:
            print(form.errors)

    context_dict['form'] = form

    return render(request, 'openminds/keyword.html', context_dict)

keyword.html

[...]

<h3>Add a new Idea</h3>
<div>
    <form id="idea_form" method="post" action="">{% csrf_token %}
        {% for hidden in forms.hidden_fields %}
            {{ hidden }}
        {% endfor %}
        {% for field in forms.visible_fields %}
            {{ field.errors }}
            {{ field }}
        {% endfor %}

        <input type="submit" name="submit" value="Add Idea" />
    </form>
</div>

1 个答案:

答案 0 :(得分:1)

我认为您已将form传递给模板,但尝试使用forms