首页 > 其他分享 >Flask学习笔记(四)-Response对象+表单实例

Flask学习笔记(四)-Response对象+表单实例

时间:2022-09-26 22:01:49浏览次数:55  
标签:return name get Flask 表单 html Response

一、响应对象response

flask提供了Response最为视图最终返回的数据,但在代码编写过程中,我们通常很少直接使用Response对象,下面是几个常见的视图返回数据的方式

from flask import Flask, jsonify, render_template, Response, request,redirect
import os
app=Flask(__name__)
@app.route('/text')
def get_text():
#返回文本
return '返回文本'
@app.route('/dict')
def get_dict():
#返回字典
return {'state':0}
@app.route('/json')
def get_json():
#返回json
return jsonify({'state':0})

@app.route('/html')
def get_html():
#返回html
return render_template('index.html')
@app.route('/response')
def get_resonponse():
#返回一个Response对象
return Response('Not Found', status=404)

@app.route("/image")
def image():
#返回图片数据
f = open(os.getcwd()+"\\static\\tp01.jpg", 'rb')
resp = Response(f.read(), mimetype="image/jpeg")
return resp


if __name__ == '__main__':
app.run(debug=True)
  1. get_text 返回一个字符串
  2. get_dict 返回一个字典
  3. get_json 返回一个json格式的字符串
  4. get_html 返回一个模板
  5. get_resonponse 返回一个Response对象
  6. 利用Response返回图片

使用谷歌浏览器来查看这几个http响应的类型,1, 4, 5 的Content-Type 是 text/html,2,3的Content-Type 是application/json。这说明,flask会根据视图函数的返回值类型,来决定最终的Content-Type。

二、flask提交表单

用户使用表单向服务器提交信息,比如最常见的登录,本文讲解如何在html页面里提交表单,flask如何处理表单数据,此外还将讨论表单敏感信息如何存储。下面是一个简单的登录页面中的form表单

index.html示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>
        欢迎{{name}}
    </h1>
</body>
</html>

login.html示例:  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <form action="/login" method="POST">
      <p>name: <input type="text" name="name" /></p>
      <p>password: <input type="password" name="password" /></p>
      <input type="submit" value="提交" />
  </form>
</body>
</html>
  • action 设置提交的url
  • method 设置请求的方法
  • input标签的type设置为password时,在页面输入信息时不会显示明文

在服务端,接收表单信息的方式如下

@app.route('/login', methods=['GET', 'POST'])
def do_login():
    if request.method == 'GET':
        return render_template('login.html')
    else:
        name = request.form['name']
        password = request.form['password']
        if name == 'python':
            return render_template('index.html', name=name)
        else:
            return redirect('/login')

通过request.form来获取表单信息,然后要对用户输入的用户名和密码做校验,这里只是为了做演示,因此判断逻辑很简单,真正的产品里,需要拿着用户名和密码去数据库的user表里去查询,如果能找到用户,则说明用户名和密码是正确的。

 

 

 

 

  

标签:return,name,get,Flask,表单,html,Response
From: https://www.cnblogs.com/xfbk/p/16732661.html

相关文章

  • java service/web前端解决跨域( CORS policy: Response to preflight request doesn't
    1、什么是跨域?跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。所谓同源是指,域名,协议,端口均相同,只要有一个不同,就是跨域......
  • Spring MVC框架:第八章:表单form:form标签
    第六章表单标签SpringMVC也提供了一组类似JSTL的标签,供我们在页面上简化开发。下面是个例子:<form:formaction="pageContext.request.context......
  • Flask学习笔记(三)-jinja2 模板入门
    一、表达式jinja2是一个被广泛使用的模板引擎,其设计思想源自于django模板引擎,jinja2扩展了语法,增加了强大的功能,被flask选为内置的模板语言示例的目录结构如下./├─......
  • 记录multipartFile表单类型转化为file
    导入依赖<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.7</version></dependency>调用其中的方法 ......
  • 【Python】【Flask】【字符串索引】计算人民币与美元的相互计算
    目录简介PythonCode导包设置首页计算的接口问题0:设置请求方式问题1:关于接收数据可能存在的问题问题2:返回结果启动完整代码HTMLCode问题分析分析:获取下拉列表框的选中值分......
  • 表单序列化得常用方法
    方法1:serialize():就是把表单信息序列化成一个字符串(认为最常用的方法)<html><head><scripttype="text/javascript"src="/jquery/jquery.js"></script><scriptty......
  • 【学习笔记】操作表单
    操作表单 获得表单信息输入框<body><formaction="post">  <p>    <span>用户名:</span><inputtype="text"id="username">  </p></form>​......
  • Flask or Django?
    首先对于刚接触Python后端的新手先学哪一个?哪一个都可以!不要停留在原地,一旦决定了就一直坚持走下去!Flask容易入门,基本上在搭好开发环境的前提下花几个小时学习就可以算......
  • Flask 学习-78.Flask-SQLAlchemy 一对多关系
    前言一个人有多个收件地址,这就是一对多关系一对多(one-to-many)关系关系使用relationship()函数表示。然而外键必须用类sqlalchemy.schema.ForeignKey来单独声明:c......
  • 使用pychrm编写第一个Flask Web程序
    使用pychrm编写第一个FlaskWeb程序fromflaskimportFlaskapp=Flask(__name__)#实例化类[email protected]('/')#装饰器操作,实现URL地址defhello():......