【发布时间】:2020-08-11 11:14:41
【问题描述】:
我一直在尝试提出解决方案,并且已经在网上搜索了几个小时。希望大家能帮我找出代码中的问题!
我正在尝试在 Django 中实现一个表单,一个简单的文本字段。一旦用户在字段中提交文本数据,我希望它发布数据,并且我想要下一个视图来检索该数据并将其打印在屏幕上。详细说明:我希望用户在home.html页面的表单中输入一些文本然后提交,然后用户输入的内容会打印在下一页predict.html上(当然我打算把inpur改成之间,但首先我希望文本至少打印在第二页上)。
这是我的代码:
views.py
from django.shortcuts import render
from django.http import HttpResponse
from .forms import NameForm
from django.template import RequestContext
def index(request):
return render(request, 'personal/home.html')
def predicted(request):
predicted = request.POST.get('data')
return render(request, 'personal/predicted.html', {"predicted": predicted})
def get_name(request):
if request.method == 'POST':
if form.is_valid():
return predicted(request)
else:
form = NameForm()
return render(request, 'home.html', {'form': form})
forms.py
from django import forms
class NameForm(forms.Form):
data = forms.CharField(label='Your text:', max_length=100)
home.html
{% extends "personal/header.html" %}
{% block content %}
<p>Please input your text:</p>
<br>
<form action="/predicted/" method="POST">
{% csrf_token %}
<label for="data">Your text: </label>
<input id="data" type="text" name="data">
<input type="submit" value="Submit!">
</form>
{% endblock %}
predicted.html
{% extends "personal/header.html" %}
{% block content %}
<p><a>Your predicted text:
<br>
{{ predicted }} </a></p>
{% endblock %}
我猜错误出在predicted = request.POST.get('data') 行的某处,与我写错的其他行相结合...除此之外,其他一切似乎都正常。我想保留方法 POST(而不是 GET),因为输入表单中的数据可能会变得非常大,这将导致 predict.html 的 URL 非常庞大。
非常感谢您的帮助!!
【问题讨论】:
-
您将其作为
predicted传递给模板,而不是x或data。 -
抱歉!我正在“调试”并忘记删除...即使使用 {{ predicted }} 输出是空的,所以这不是这里的主要问题...但是感谢您的突出显示,我进行了编辑。
-
您的代码当前在访问预测页面时是否抛出任何错误?
-
不,一切正常,但是 {{ predicted }} 应该是空的,所以没有变量被接管。
-
而不是这个
return render_to_response('personal/predcited.html', RequestContext(request)),你为什么不直接使用return predicted(request)?
标签: django python-3.x forms post