【问题标题】:Django Form Field not showing upDjango 表单字段未显示
【发布时间】:2017-07-29 17:23:18
【问题描述】:

我刚开始学习 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>

【问题讨论】:

    标签: python django forms templates


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-09
      • 2021-01-22
      • 2021-01-01
      • 2021-11-10
      相关资源
      最近更新 更多