python - Django表单返回空白到下一个模板
问题描述
我的表单似乎永远不会将输入从一个模板返回到另一个模板,我很难理解为什么。
表格.py:
class textForm(forms.Form):
message = forms.CharField(widget=forms.Textarea)
视图.py:
from django.shortcuts import render
from django.http import HttpResponse
from .forms import textForm
from django.http import HttpResponseRedirect
# The nbar statement is used to show which one is active
def index(Request):
return render (Request, 'index/home.html')
def article(Request):
if Request.method == 'POST':
form = textForm(Request.POST)
if form.is_valid():
message = form.cleaned_data['message']
form = textForm()
context = {'message': message, 'form': form}
#if request is valid and post, send info to next template
return render(Request, 'index/article.html', context)
else:
form = textForm()
#else return to the template where user fills out input
return render(Request, 'index/translate.html', {'form': form})
def translate(Request):
return render (Request, 'index/translate.html', {'nbar': 'translate'})
def most_popular(Request):
return render (Request, 'index/most_popular.html', {'nbar': 'most_popular'})
def the_news(Request):
return render (Request, 'index/news.html', {'nbar': 'news'})
def sports(Request):
return render (Request, 'index/sports.html', {'nbar': 'sports'})
def science(Request):
return render (Request, 'index/science.html', {'nbar': 'science'})
def politics(Request):
return render (Request, 'index/politics.html', {'nbar': 'politics'})
def funny(Request):
return render (Request, 'index/funny.html', {'nbar': 'funny'})
index/translate.html 表单所在的位置,用户输入文本的位置:
{% extends "index/header.html" %}
{% block content %}
<div class="container">
<h5 style="padding-top: 20px; padding-bottom: 40px;"><strong>welcome!</strong></h5>
<form action="/article" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</form>
</div>
{% endblock %}
index/article.html 我想从表单中返回值:
{% extends "index/header.html" %}
{% block content %}
<!-- the first div functionality will be created later -->
<div>
<h2 style="font-size:45px; margin-top: 35px; margin-bottom: -15px;"> article title </h2>
</div>
<div class="card border border-dark" style = "padding-left: 0px;">
<div class="card-body" style="margin-top: -10px; margin-bottom: -10px; margin-left: -10px;">
<p class="card-title"><strong> result:</strong> </p>
<p class="card-text"> {{ message }} </p>
</div>
</div>
{% endblock %}
我得到的结果是第二个 HTML 文件中的 {{message}} 始终为空白 - 它不返回任何内容
解决方案
您的模板中有错误。它应该是:
<form action="/article" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</form>
并像这样编辑您的视图:
def article(request):
if request.method == 'POST':
form = TextForm(request.POST)
if form.is_valid():
message = form.cleaned_data['message']
form = TextForm()
context = {'message': message, 'form': form}
return render(request, 'index/article.html', context)
else:
form = TextForm()
return render(request, 'index/article.html', {'form': form})
推荐阅读
- css - SVG 文本标签中的 CSS 缩放动画在 Safari 上不起作用
- class - 将消息类更改为自定义表单的约会
- javascript - 需要帮助保存用户输入
- python-3.x - 正则表达式获取带有负号的模式的最后一次出现
- javascript - 顶点图表折线图仅在第一个月不显示数据标签
- python - 查找字典和列表之间的匹配字符串并用字符串替换匹配项
- javascript - 循环进入 html 元素以决定每个元素的边
- python - Kivy 在android中打开应用程序时我可以删除kivy加载屏幕吗?
- flutter - 我的 Flutter 安装有问题吗?
- tensorflow - 如何在 Google Cloud 中选择特定的 TPU?