如何使用 html 文件在 django 中显示 ChoiceField?

Posted

技术标签:

【中文标题】如何使用 html 文件在 django 中显示 ChoiceField?【英文标题】:How to display ChoiceField in django with html file? 【发布时间】:2019-07-26 08:13:45 【问题描述】:

我是 django 的新手,我正在尝试让 ChoiceField 为用户输入工作。 我尝试了两次 html 迭代,但都没有显示任何形式的下拉菜单。

请参阅下面的模型、表单、html 代码

models.py

from django.db import models
from django.contrib.auth.models import User

class Post(models.Model):

    CATEGORIES=(
        ('COM', 'Combat'),
        ('CRA', 'Crafting'),
        ('WAR', 'Warfare'),
    )

    post= models.CharField(max_length=500)
    post2= models.CharField(max_length=500)
    category=models.CharField(max_length=3, choices=CATEGORIES)

    user = models.ForeignKey(User, on_delete=models.CASCADE)

forms.py

class HomeForm(forms.ModelForm):
    post = forms.CharField()
    post2 = forms.CharField()

    category = forms.ChoiceField(choices=Post.CATEGORIES)

    class Meta:
        model = Post
        fields = ('post','post2','category',)

html


    <form method="post">

        % csrf_token %
        form.as_p or form


        <input type="submit" value="Submit">


    </form>

views.py

类 HomeView(TemplateView): template_name = '健身/name.html'

def get(self, request):
    form = HomeForm()
    return render(request, self.template_name, 'form':form)

def post(self, request):

    form = HomeForm(request.POST)
    if form.is_valid():
        form.save()
        text = form.cleaned_data['post']
        form = HomeForm()
        return redirect('home:home')

    args = 'form': form, 'text': text
    return render(request, self.template_name, args)

【问题讨论】:

视图在哪里? 是什么显示的? 刚刚添加到问题中 【参考方案1】:

试试这个

 class HomeForm(forms.ModelForm):
    post = forms.CharField()
    post2 = forms.CharField()
    class Meta:
        model = Post
        fields = ('post','post2','category',)
        widgets = 
            'category': forms.Select(choices=Post.CATEGORIES,attrs='class': 'form-control'),
        

【讨论】:

谢谢,但仍然没有显示任何内容,只有 Post 1 和 Post 2 输入字段。然后类别显示为没有任何下拉列表的字符串。然后就是提交按钮。 嘿,检查这是否有效,问题是您使用的 ModelForm 与普通 Form 的工作方式略有不同 感谢您的帮助,但它仍然显示相同的内容。我最初想知道这是否是一个html问题? 查明问题变得越来越困难,不过,我建议您遵循 Django 的最佳实践,很多地方您都偏离了它们。当这种情况发生时,小事情最终可能会导致消磨时间的问题。 marinamele.com/django 和两勺 Django 是它的两个最佳资源。 我真的认为这里的问题是您如何处理 ModelForm,尝试使用基于类的视图重做整个事情,阅读如何编写 ModelForm 视图,使用ModelForm 正在编写基于类的视图。

以上是关于如何使用 html 文件在 django 中显示 ChoiceField?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中使用 HTML 输入类型文件作为 FileField 类型?

如何使用 django 显示在 textarea 中输入的数据?

如何在 django 项目中导入和显示 csv 文件

如何在 django 模板中显示保存的、动态创建的图像?

Django Python - 如何在一个 HTML 模板中显示来自不同表的信息

Django staticfiles图像未显示