从 Django 中的表单呈现视图



我在从表单中获取内容并将其显示在另一个页面上时遇到问题。

当我单击提交时,它会将我定向到正确的页面,但由于我的函数中存在错误,因此无法加载。我也不确定如何在页面上显示内容。

我的表格:

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

有几点不对劲。首先,任何涉及请求的事情都必须在方法中完成,而不是在类级别完成;类是在导入时定义的,此时没有请求。

其次,定义一种称为request的方法毫无意义。在基于类的视图中,主要方法以 HTTP 方法命名 -getpost- 因此您需要在此处覆盖相关的方法,即post

第三,Django中没有request.form;你想到了Flask。在 Django 中,您需要使用request.POST

最后,要显示表单的内容,您需要将其作为上下文传递给 render 函数。

相关内容

  • 没有找到相关文章

最新更新