python web开发-flask中访问请求数据request

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.

2. 定义表单展示url

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

@app.route("/form")def renderForm():???? return render_template("form.html")

3. 编写一个表单数据处理的方法

在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的数据

4. 测试应用

启动应用访问/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")
?
再次提交后,效果如图:


原文地址:http://blog.51cto.com/12482328/2088937

时间: 2024-11-05 16:24:50

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

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

flask中带斜线和不带斜线的url 通过flask进行路由配置的时候,有一个细节,就是同样的url,带上"/"和不带"/"有什么区别. 举例说明: 比如有个url,名字为"/url" 先同时定义两种url,一种带"/",一种不带"/",如下代码: @app.route("/url")def urlWithOut():return "url with out /" @

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

Flask使用日志记录的方式: 1. 初始化flask应用实例 在flask中使用logger,需要初始化一个flask的应用 app = Flask(__name__) 2. 调用logger 直接调用logger方法 app.logger.info("my first logging") 这里记录的是info级别的日志 3. 查看结果 运行结果如下: INFO in Code [D:/xxxxx/flask/Code.py:20]: my first logging 默认情况下,f

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

Flash中的消息闪现,在官方的解释是用来给用户做出反馈.不过实际上这个功能只是一个记录消息的方法,在某一个请求中记录消息,在下一个请求中获取消息,然后做相应的处理,也就是说flask只存在于两个相邻的请求中"闪现",第三次请求就不存在这个flash了. 下面我们用一个例子来说明一个是如何"闪"的. 首先引入flash和get_flashed_message方法 from flask import Flask,url_for,render_template,requ

python web开发-flask中sqlalchemy的使用

SqlAlchemy是一个python的ORM框架. 在flask中有一个flask-sqlalchemy的扩展,使用起来很方便. 1.       创建一个sqlalchemy的Model模块 创建一个models.py的模块 创建model的时候,首先引入flask-sqlalchemy的扩展 from flask import Flask from flask_sqlalchemy import SQLAlchemy 然后初始化app和sqlalchemy app = Flask(__na

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

某些情况下,需要读取flask网站要目录下的txt文件.但是直接在flask网站的目录下创建一个文件是无法访问的.从网站找了一些资料,最终发现通过写一个方法返回txt内容比较简单方便,不过此方法适用于简单的文件读取以及读取量比较小的时候.详细代码如下: @app.route('/<path>')def today(path):base_dir = os.path.dirname(__file__)resp = make_response(open(os.path.join(base_dir,

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

在之前的文章中我们介绍了如何在centOS中安装sqlite数据库. Sqlite安装完成后,本节就用flask来连接和操作sqlite数据库. 1.       数据准备 先在sqlite3中创建一个数据库mydb,执行sqlite3 mydb 然后执行.databases命令,查看我们创建的数据库 可以看到我们把数据库文件放到了/www/db/mydb文件夹下面 然后我们创建一个user表 使用insert语句 ,写入一条数据到user表中 2.       在code.py中添加获取用户列

Redis的Python实践,以及四中常用应用场景详解——学习董伟明老师的《Python Web开发实践》

首先,简单介绍:Redis是一个基于内存的键值对存储系统,常用作数据库.缓存和消息代理. 支持:字符串,字典,列表,集合,有序集合,位图(bitmaps),地理位置,HyperLogLog等多种数据结构. 支持事务.分片.主从复之.支持RDB(内存数据保存的文件)和AOF(类似于MySQL的binlog)两种持久化方式.3.0加入订阅分发.Lua脚本.集群等特性. 命令参考:http://doc.redisfans.com 中文官网:http://www.redis.net.cn 安装(都大同小

python web框架Flask——csrf攻击

CSRF是什么? (Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用也就是人们所知道的钓鱼网站.尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左.XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站.与XS

python web 开发学习路线

自己目前学习python web 开发, 经过两个月的摸索,目前对web开发有了浅显的认识,把自己的学习过程贴出来.1.python入门推荐老齐<从零开始学python>,<python简明教程>,这两本书很适合小白入门(像我一样长期徘徊在编程门外的人)2.python进阶推荐<python学习手册>,python学习手册的前半部分与在入门教程中的基础部分相重复,后面部分对python的介绍更细致,比如面向对象的这部分对于小白理解相对容易.还有一本<python