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" ...
随机推荐
- k-means实战-RFM客户价值分群
数据挖掘的十大算法 基本概念 导入数据集到mysql数据库中 总共有940个独立消费数据 K-Means 算法 K-Means 算法是一个聚类算法.你可以这么理解,最终我想把物体划分成 K 类.假设每 ...
- 【AtCoder】AtCoder Grand Contest 035 解题报告
点此进入比赛 \(A\):XOR Circle(点此看题面) 大致题意: 给你\(n\)个数,问是否能将它们摆成一个环,使得环上每个位置都是其相邻两个位置上值的异或值. 先不考虑\(0\),我们假设环 ...
- 【CF464E】The Classic Problem(主席树+最短路)
点此看题面 大致题意: 给你一张无向图,每条边的边权为\(2^{x_i}\),求\(s\)到\(t\)的最短路. 最短路 最短路,首先考虑\(Dijkstra\).这里用\(SPFA\)似乎不太好,因 ...
- 游戏设计艺术 第2版 (Jesse Schell 著)
第1章 太初之时,有设计师 (已看) 第2章 设计师创造体验 第3章 体验发生于场景 第4章 体验从游戏中诞生 第5章 游戏由元素构成 第6章 元素支撑起主题 第7章 游戏始于一个创意 第8章 游戏通 ...
- backbone 路由传参(可选)
因为维护公司的老项目而接触到backbone.以前是只闻其名,未见其码. 因为其他项目需要跳转到本项目的某个页面,但是需要UI改变. 考虑的方法是给路由添加一个可选参数.代码如下: 正常路由: rou ...
- 数组去重--ES6方法
数组去重方法1:用es6的set和...扩展运算符 let arr = [1,2,3,4,4,5,2]; console.log([...new Set(arr)]) // [1, 2, 3, 4, ...
- centos的key登录,关闭密码登录
1.删除机器原有的key rm -rf /root/.ssh 2.创建key[root@rain ~]# ssh-keygen -t rsa一路回车 3.改名[root@rain ~]# mv /ro ...
- Java连载8-基本数据类型2
一.基本数据类型 1.字符串“abc”不属于基本数据类型,属于引用数据类型 2. 基本数据类型 占用空间大小(单位:字节) byte 1 short ...
- HTTPS 相关问题
什么是 HTTPS? HTTPS,是指超文本传输安全协议(Hypertext Transfer Protocol Secure),是一种在 HTTP 协议基础上进行传输加密的安全协议,能够有效保障数据 ...
- sql语句将一个表的数据拷贝到另一个表中
假定有一个a表,一个b表,要将a表的数据拷贝到b表中. 1.如果a表和b表结构相同. insert into b select * from a; 2.如果a表和b表的结构不相同. insert in ...