我一直在尝试提出解决方案,并且已经在网上搜索了几个小时。希望你们能帮助我在我的代码中找到问题!
我正在尝试在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),因为输入表单中的数据可能会变得很大,并且这将导致hughe URL成为predict.html。
非常感谢您的帮助!
我终于设法提出了一个可行的解决方案。我不知道这是否是最漂亮的解决方案,但我很高兴它能起作用。我的代码中的所有内容都是正确的,除了views.py