如何使用 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 中输入的数据?