Request对象在web应用的开发中是一个非常重要的对象,主要用来获取用户发来的请求数据。

常用属性参考:http://docs.jinkan.org/docs/flask/api.html#flask.request

下面我们以一个表单提交的例子来说明一些常用request属性的使用。

  1. 创建一个表单的template

在templates文件夹下面创建form.html模板文件,输入下面的代码

{% extends "base.html" %}
{% import "forms.html" as forms %}
{% block content %}
    <form action="/doPost" method="post">
        <dl>
            <dt>UserName</dt>
            <dd>{{ forms.input("username") }}</dd>
            <dt>Password</dt>
            <dd>{{ forms.input("password",type="password") }}</dd>
            <dd><input type="submit" value="提交"/></dd>
        </dl>     </form> {% endblock %}

其中用到了forms.html中的宏,关于宏的应用请参考本系列文章的其它内容。通过调用宏创建了一个username和password的文本框,同时定义action是/doPost即把数据提交到/doPost这个url上,method用Post.

  1. 定义表单展示url

在code.py中定义一个返回表单的方法:

@app.route("/form")
def renderForm():
    return render_template("form.html")
  1. 编写一个表单数据处理的方法

在code.py中定义表单处理的函数,url要定义为form.html中action所指向的url,即”/doPost”,

@app.route("/doPost",methods=["post"])
def handPost():
    username = request.form["username"]
    password = request.form["password"]
    return "username:"+username+",password:"+password

这个方法会返回用户提交的username和password的数据

  1. 测试应用

启动应用访问/form这个url,效果如图:

在文本框中输入username和password,这里我们用zhang san和password作为这两个框的值:

点击提交,会转到doPost路径,效果如图:

这样一个简单的表单提交就完成了

如果我们在提交数据给doPost这个方法的时候,在url上加了参数,可以通过arg来获取,

比如我们在form.html上给action加上一个参数?q=postString,如图:

<form action="/doPost?q=postString" method="post">

同时,在处理post请求的方法中添加q参数的处理代码

arges = request.args["q"]

整体代码如下:

再次提交后效果:

通过request.values可以获取forms和url上的所有参数的值,比如,我们在doPost方法里添加一个处理values的代码

requestValues = request.values.get("username")
requestValues2 = request.values.get("q")
 
再次提交后,效果如图:

												

python web开发-flask访问请求数据request的更多相关文章

  1. python web开发-flask中response,cookies,session对象使用详解

    Response响应对象: 当一个web请求被服务器处理完后,会返回用户请求的响应,这时候就要用到响应对象,根据响应给用户的形式不同,响应对象有以下几种处理方式 如果返回的是一个合法的响应对象,它会从 ...

  2. python web开发-flask中消息闪现flash的应用

    Flash中的消息闪现,在官方的解释是用来给用户做出反馈.不过实际上这个功能只是一个记录消息的方法,在某一个请求中记录消息,在下一个请求中获取消息,然后做相应的处理,也就是说flask只存在于两个相邻 ...

  3. python web开发-flask连接sqlite数据库

    在之前的文章中我们介绍了如何在centOS中安装sqlite数据库. Sqlite安装完成后,本节就用flask来连接和操作sqlite数据库. 1.       数据准备 先在sqlite3中创建一 ...

  4. python web开发-flask中sqlalchemy的使用

    SqlAlchemy是一个python的ORM框架. 在flask中有一个flask-sqlalchemy的扩展,使用起来很方便. 1.       创建一个sqlalchemy的Model模块 创建 ...

  5. python web开发-flask调试模式

    使用run()方式可以启动flask应用,但是每次修改代码之后,需要重新启动,这样对于调试就很不太方便.Flask的调试模式可以让代码在每次修改之后自动载入. 有两种方法可以启用flask的调试模式 ...

  6. python web开发-flask中的url带斜线和不带斜线区别详解

    通过flask进行路由配置的时候,有一个细节,就是同样的url,带上"/"和不带"/"有什么区别. 举例说明: 比如有个url,名字为"/url&qu ...

  7. python web开发-flask读取txt文件内容

    某些情况下,需要读取flask网站要目录下的txt文件.但是直接在flask网站的目录下创建一个文件是无法访问的.从网站找了一些资料,最终发现通过写一个方法返回txt内容比较简单方便,不过此方法适用于 ...

  8. python web开发-flask中日志的使用

    Flask使用日志记录的方式: 初始化flask应用实例 在flask中使用logger,需要初始化一个flask的应用 app = Flask(__name__) 2. 调用logger 直接调用l ...

  9. python web开发flask框架 安装与环境

    # encoding:utf-8 # 从flask这个框架中导入Flask这个类 from flask import Flask # 初始化一个Flask对象 # Flasks() # 需要传递一个参 ...

随机推荐

  1. java字符串以及字符类型基础

    介绍一下java字符集和字符的编码方式, 首先要区分一下字符集和字符编码.所谓的字符集 类似于unicode,GB2312,GBK,ASCII等等.因为一开始只有26个英文字母需要 编一下号.所有用下 ...

  2. HDU - 3567 IDA* + 曼哈顿距离 + 康托 [kuangbin带你飞]专题二

    这题难度颇大啊,TLE一天了,测试数据组数太多了.双向广度优先搜索不能得到字典序最小的,一直WA. 思路:利用IDA*算法,当前状态到达目标状态的可能最小步数就是曼哈顿距离,用于搜索中的剪枝.下次搜索 ...

  3. (转载)SVM-基础(三)

    支持向量机: Kernel  by pluskid, on 2010-09-11, in Machine Learning     70 comments 本文是"支持向量机系列" ...

  4. 微软Surface Book推送Windows 10新固件更新:增强系统和电池

    微软公司最近为Surface Book推出了新的Windows 10固件系统和驱动的更新,并且以MSI的文件格式上传到了微软的下载中心里面.此次更新的内容主要是改进了Surface Book的系统的稳 ...

  5. C#访问修饰符(public,private,protected,internal,sealed,abstract)

    为了控件C#中的对象的访问权限,定义对象时可以在前面添加修饰符. 修饰符有五种:private(私有的),protected(受保护的),internal(程序集内部的),public(公开的),以及 ...

  6. FusionWidgets Cylinder图

    1.数据源 Cylinder.xml: <?xml version="1.0" encoding="UTF-8"?> <chart palet ...

  7. 常用YUV转RGB代码

    常用YUV转RGB [java] view plaincopyprint? public class YuvToRGB { private static int R = 0; private stat ...

  8. Java之List排序

    1.Java封装类 Student.java: /** * @Title:Student.java * @Package:com.you.data * @Description: * @Author: ...

  9. Windows控制台下绘制简单图形

    最近接触到一个很有意思的问题,如何在Windows控制台下画图,翻遍了C的头文件也没找到画图的函数,好吧,那就用Windows提供的API函数吧,看来想移植是没戏了.先画一个简单的图,类似心电图那种吧 ...

  10. mpeg文件格式分析

    MPEG-1流比特层次结构分析总结 1.简要介绍Mpeg 2.Mpeg-1数据流分析 2.1视频序列层(VideoStream) 2.2画面组层(GOP) 2.3画面层(Pictures) 2.4片层 ...