我无法从表单中获取内容并将其显示在另一页上。
当我点击提交时,它会将我引导到正确的页面但由于我的功能中存在错误而无法加载。我也不确定如何在页面上显示内容。
我的表格:
<div class = "container">
<form action="{% url 'cleaner:result' %}" method ="post" >
{% csrf_token %}
<div>
<label for="cv">Enter details: </label>
<textarea name="cv" id='cv' rows="10" cols="30" maxlength="20000"></textarea>
</div>
<div>
<button>Submit</button>
</div>
</form>
</div>
urls.py
url(r'clean/result/$', views.ResultView.as_view(), name='result'),
我的问题在于 views.py
class ResultView(View):
template_name = 'cleaner/result.html'
#Get details from form
details = request.form.get("cv")
def result(request):
if details != '':
return render(request, template_name)
这不是从表单中获取内容的正确方法。我怎么能得到这个?
details = request.form.get("cv")
NameError: name 'request' is not defined
之后,如何显示表单的内容?
我正在使用django 1.9和python 3.6.4。
修改
如果有人遇到这个问题,这是工作代码:
class ResultView(View):
template_name = 'cleaner/result.html'
def post(self, request):
#Get details from form
details = request.POST.get("cv")
if details != '':
return render(request, self.template_name)
答案 0 :(得分:2)
有一些问题。首先,涉及请求的任何事情都必须在一个方法中完成,而不是在类级别;类是在导入时定义的,此时没有请求。
其次,没有必要定义一个名为request
的方法。在基于类的视图中,主要方法以HTTP方法命名 - get
和post
- 因此您需要在此处覆盖相关的方法,即post
。
第三,Django中没有request.form
;你在想Flask。在Django中,您需要使用request.POST
。
最后,要显示表单的内容,您需要将其作为上下文传递给渲染函数。