Skip to main content
 首页 » 编程设计

python之Django 表单字段未显示

2025年02月15日41jiqing9006

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

这是我的代码:

模型.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 

表单.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',)         

View .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) 

关键字.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> 

请您参考如下方法:

我认为您正在将 form 传递给模板,但试图使用 forms。