flask中的Flask、request、render_temple、redirect和url_for
学flask也有一个多星期了,对这个web框架也有了一点的了解,梳理一些基础的知识点,还是小白一只,代码写得比较low,若文章有错误的地方欢迎大佬随时指正,代码中被注释掉的代码是关于预防csrf,无视即可
主程序脚本:
from flask import Flask, render_template, request, redirect, url_for # from flask_wtf import CSRFProtect app = Flask(__name__) # 声明一个Flask的类,__name__参数的作用是为了确定程序的根目录,以便获得静态文件的模板文件
# app.config["SECRET_KEY"] = "12345678"
#
# CSRFProtect(app) @app.route('/') # @app.router()是一个装饰器,它的作用就是把试图函数(可以简单的理解成就是它下面的函数)与某一个url(后面括号中的部分)绑定,当访问这个url时,就会运行这个视图函数
def Helloworld():
return redirect(url_for('home')) url_for对视图函数进行反转,第一个参数为视图函数名,如果视图函数有参数,可加在后面,返回url,redirect是重定向到括号里面的url,这里为url_for的返回值 @app.route("/regist/", methods=["get", "post"]) # methods指定请求这个url的方法,默认是get,这里指定使用get或post两种方式
def regist():
if request.method == "GET":
return render_template("csrf_regist.html") # render_template对页面进行渲染,如果页面中存在待接受的参数,可将参数放在后面 else:
print(request.form) # 如果请求方式为post,则在后台输出用户输入的信息。request可以获取到前端用户输入的信息,request.args获取get请求,request.form获取post请求 return redirect(url_for('login')) # 对login视图函数进行反转,并进行重定向 @app.route("/login/", methods=["get", "post"])
def login():
if request.method == "GET":
return render_template("csrf_login.html") else:
print(request.form) return redirect(url_for('home')) @app.route('/home/')
def home():
return render_template('csrf_home.html') if __name__ == "__main__":
app.run()
首页(csrf_home.html)代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>csrf首页</title>
</head>
<body>
<h1>欢迎来到首页,请选择登陆或注册</h1>
<a href="{{ url_for('login') }}">登陆</a> # 当用户点击登陆时,跳转到登陆页面
<a href="{{ url_for('regist') }}">注册</a> # 当用户点击注册时,跳转到注册页面
</body>
</html>
注册(csrf_regist.html)代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>csrf的注册页面</title>
</head>
<body>
<form action="", method="post">
<table>
<tbody>
{# <td>#}
{# <input type="text" name="csrf_token", value="{{ csrf_token() }}">#}
{# </td>#}
<td>
<tr>用户名:</tr>
<tr><input type="text" name="username" value=""></tr><br>
</td>
<td>
<tr>密码:</tr>
<tr><input type="password" name="password" value=""></tr><br>
<input type="submit" value="注册">
</td>
</tbody>
</table>
</form>
</body>
</html>
登陆(csrf_login.html)代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>csrf登陆页面</title>
</head>
<body>
<form action="", method="post">
<table>
<tbody>
{# <td>#}
{# <input type="text" name="csrf_token", value="{{ csrf_token() }}">#}
{# </td>#}
<td>
<tr>用户名:</tr>
<tr><input type="text" name="username" value=""></tr><br>
</td>
<td>
<tr>密码:</tr>
<tr><input type="password" name="password" value=""></tr><br>
<input type="submit" value="登陆">
</td>
</tbody>
</table>
</form>
</body>
</html>
flask中的Flask、request、render_temple、redirect和url_for的更多相关文章
- Flask中全局变量的实现
我们都知道在Flask中g,request,session和request是作为全局对象来提供信息的,既然是全局的又如何保持线程安全呢,接下来我们就看看flask是如何做到这点的.在源码中的ctx.p ...
- flask中的上下文_请求上下文和应用上下文
前引 在了解flask上下文管理机制之前,先来一波必知必会的知识点. 面向对象双下方法 首先,先来聊一聊面向对象中的一些特殊的双下划线方法,比如__call__.__getattr__系列.__get ...
- [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)
oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip i ...
- flask中的request和response
1.request 1.request的常用成员 1.scheme : 获取请求方案(协议) 2.method : 获取本期请求的请求方式(重点) 3.args : 获取使用get请求方式提交的数据 ...
- 第三篇 Flask 中的 request
第三篇 Flask 中的 request 每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的 为了了解Flask的request中都有什么东西,首先我们要写一个前 ...
- 第二篇 Flask 中的 Render Redirect HttpResponse
第二篇 Flask 中的 Render Redirect HttpResponse 1.Flask中的HTTPResponse 在Flask 中的HttpResponse 在我们看来其实就是直接返 ...
- 转载 Flask中客户端 - 服务器 - web应用程序 是如何处理request生成response的?
文章转载自https://blog.csdn.net/weixin_37923128/article/details/80992645 , 感谢原作者 当客户端向服务器发送一个请求时,服务器会将请求转 ...
- Flask最强攻略 - 跟DragonFire学Flask - 第三篇 Flask 中的 request 之 先知道有这么个东西
每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的 为了了解Flask的request中都有什么东西,首先我们要写一个前后端的交互 基于HTML + Flask 写一 ...
- Flask最强攻略 - 跟DragonFire学Flask - 第二篇 Flask 中的 Render Redirect HttpResponse
1.Flask中的HTTPResponse 在Flask 中的HttpResponse 在我们看来其实就是直接返回字符串 2.Flask中的Redirect 每当访问"/redi" ...
随机推荐
- jieba、NLTK学习笔记
中文分词 - jiebaimport re import jieba news_CN = ''' 央视315晚会曝光湖北省知名的神丹牌.莲田牌“土鸡蛋”实为普通鸡蛋冒充,同时在商标上玩猫腻, 分别注册 ...
- Badboy安装和简单介绍
参考链接:https://www.cnblogs.com/baoziluo/p/7907964.html
- lua 12 table 的使用
转自:http://www.runoob.com/lua/lua-tables.html table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组.字典等. Lua table ...
- vue.config.json CopyWebpackPlugin 没有生效
本地生效,服务器不生效. 因为是jenkinis构建,没有留意到报错.后来发现错误:ENOENT: no such file or directory, rename 解决方法就是:删除package ...
- Web前端开发框架大全-详述
可以说,前端技术的发展是互联网自身发展的一个缩影! 前端技术的发展经历了web1.0时代,即网页只能展示信息,几乎没有交互可言: web2.0时代,web2.0不再是单维的,逐渐发展为双向交流,另一特 ...
- 探索clickout指令实现
实现一个可复用的点击区域之外方法 随着3大框架的风靡,我们从以前的layer等UI库迁移到了更加强大的UI库,比如vue的好伙伴element,组件库的作用是封装一些常用的功能,将HTML.CSS.J ...
- Azure EA (2) 使用Postman访问国内Azure Billing API
<Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China 请读者先看一下之前的文档内容:Azure EA (1) 查看国内Az ...
- QQ音乐2019客户端-获取任意歌单完整歌曲列表和下载音乐文件方法
步骤 1.在web网站上搜搜任意歌单 https://y.qq.com/#type=index/ 例如:中国好声音4.5.6.7.8季 打开后显示网址: https://y.qq.com/n/yqq ...
- CSS3实现文字描边的2种方法
问题 最近遇到一个需求,需要实现文字的描边效果,如下图 解决方法一 首先想到去看CSS3有没有什么属性可以实现,后来被我找到了text-stroke 该属性是一个复 ...
- 如何在yii1.0.7中设置数据库连接超时?
继承CDbConnection, 覆盖 init()方法 在 parent::init() 之前设置 $this->setAttribute(PDO::ATTR_TIMEOUT, $this-& ...