我有一个简单的django应用程序来获取一些输入过程并运行一个后台进程以在新页面上显示结果。
我的视图代码如下
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
def index(request):
if request.method == 'POST':
form = JsonTestForm(request.POST)
if form.is_valid():
return HttpResponseRedirect('/result/')
else:
form = JsonTestForm()
return render(request, 'ellora/index.html', {'form': form})
表单类如下
from django import forms
class JsonTestForm(forms.Form):
jsonTest = forms.Textarea(attrs={"class": "txtarea", "placeholder": "Enter your json script here"})
我的模板文件是
<div class="wrapper">
<h1>My app</h1>
<form class="form" method="post" action="/ellora/compute/">
{% csrf_token %}
{{ form }}
<input type="submit" class="submit" value="Generate Test">
</form>
</div>
当我运行django服务器时,html文件不显示textarea。我查看了页面源代码,它在{{form}}位置只有一个空行。我在期待
<textarea class="txtarea" placeholder="Enter your json script here"></textarea>
为什么表单元素不显示?另外,如果我在模板本身中定义了,是否有办法获取它的内容而不必使用django.forms.Form.Textarea?
答案 0 :(得分:1)
forms.Textarea是一个表单小部件。
from django import forms
class JsonTestForm(forms.Form):
jsonTest = forms.CharField(widget=forms.Textarea(attrs={"class": "txtarea", "placeholder": "Enter your json script here"}))
应该渲染textarea。
答案 1 :(得分:-1)
在您的表单类中,您正在使用窗口小部件Textarea
。您需要使用forms.CharField
并将小部件指定为widget=forms.Textarea
。