html - 当我尝试检查 request.method == 'POST' 时,为什么我的 Flask 代码出错?
问题描述
我正在自学 Flask,并且有一个小的工作目录,包括一个允许用户提交“用户名”和“密码”字段的页面。当用户单击“提交”时,我想让我的代码调用一个函数并传入他们的输入信息。
但是,尝试使用“if request.method == 'POST':”时出现错误。谁能告诉我如何
A) 找到错误信息 B) 正确使用 request.method?
由于开发原因,我必须使用 Apache 而不是在本地托管 Flask 服务器,但这不应该是原因。
微博.py:
from flask import Flask, request, abort, make_response, render_template, flash, redirect
app = Flask(__name__, template_folder='/sampledirectory/microblog/app/templates')
@app.route('/login', methods=['GET', 'POST'])
def login():
if( request.method == 'POST' ):
return "Test"
form = LoginForm()
return render_template('login.html', title='Sign In', form=form)
登录.html:
{% extends "base.html" %}
{% block content %}
<h1>Sign In</h1>
<form action="" method="post" novalidate>
{{ form.hidden_tag() }}
<p>
{{ form.username.label }}<br>
{{ form.username(size=32) }}<br>
{% for error in form.username.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</p>
<p>
{{ form.password.label }}<br>
{{ form.password(size=32) }}<br>
{% for error in form.password.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</p>
<p>{{ form.remember_me() }} {{ form.remember_me.label }}</p>
<p>{{ form.submit() }}</p>
</form>
{% endblock %}
如果我删除
if( request.method == 'POST' ):
return "Test"
然后代码按预期显示 login.html 页面。
解决方案
您的问题是由于代码顺序不正确。
默认情况下,该页面应返回登录表单,但在您的情况下,您仅在有发布请求时才创建表单。
由于您需要表单同时出现在 GET 和 POST 请求中,您可以这样做。
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if( request.method == 'POST' ):
print('Got POST request')
return render_template('login.html', title='Sign In', form=form)
推荐阅读
- python - 将 Elastic Beanstalk 环境从 AWS Linux 1 升级到 AWS Linux 2
- node.js - (节点:16448)UnhandledPromiseRejectionWarning:MongoExpiredSessionError:无法使用已结束的会话
- amazon-web-services - 如何识别 AWS IAM 中的服务相关角色
- php - 在每次 git 提交时运行 PHP_Codesniffer 和 PHPStan
- python - Spyder没有找到pytrends
- reactjs - Expo,React Native:URL 和刷新问题
- python - 直接在数据库上从 python 执行 SQL Server 存储过程
- javascript - 在javascript中重叠旋转图像
- python - 我对平行四边形图案有问题,它从正到负
- javascript - Mongo CLI 与客户端速度