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" ... 
随机推荐
- 解决VMware15 centos7 桥接模式ssh突然不能访问的问题
			因为想让虚拟机拥有自己的局域网IP, 所以用了桥接, 这样方便测试. 问题来了: 1.ssh突然连接不上了,虚拟机上的项目也无法访问了. 2.虚拟机照常联网,与主机互ping什么的也都没问题,以前从来 ... 
- C++ TCP客户端网络消息发送接收同步实现
			废话不多说, 直入主题, 我们在写客户单的时候希望在哪里发消息出去,然后在哪里返回消息(同步), 然后继续往下运行-, 而不是在这里发送了一个消息给服务端, 在另一个地方接受消息(异步) , 也不知道 ... 
- Ubuntu安装有道词典
			dpkg -i youdao-dict.deb正常安装 会报一堆依赖关系的错误, 1.更新系统 #更新系统 apt-get update apt-get dist-upgrade 2.对每一个未安装的 ... 
- golang module 在 spacemcs 中的配置
			概述 golang 官方的包管理从 1.11 版本就开始支持了, 之前尝试了几次, 效果都不理想, 就一直用 dep 来管理 package. 最近 1.13 版本发布了, 使用 go module ... 
- 传统码头建设企业:Azure DevOps Server 流水线技术沟通
			受某码头建设企业的邀请,与企业软件研发团队就如何利用Azure DevOps Server进行了沟通.结合企业当前技术框架和管理流程,探索利用微软Azure DevOps Server的技术能力,加强 ... 
- k8s web终端连接工具
			k8 web terminal 一个k8s web终端连接工具,在前后端分离或未分离项目中心中,也可以把此项目无缝集成,开箱即用. 项目地址:https://github.com/jcops/k8-w ... 
- class net.sf.cglib.core.DebuggingClassWriter overrides final method visit
			在使用CGLIB进行动态代理的时候,报了[java.lang.VerifyError: class net.sf.cglib.core.DebuggingClassWriter overrides f ... 
- .net core EF Core 视图的应用
			由之前的一篇文章<.net core Entity Framework 与 EF Core>我们都已经知道 EF Core 增加了许多特性,并且性能上也有了很大的提升. 但是EF Core ... 
- Powershell ExecutionPolicy 执行策略
			简单说明 powershell对于脚本的执行有着严格的安全限制 Get-ExecutionPolicy -List #查看当前的执行策略 Set-ExecutionPolicy -Scope Curr ... 
- ASP.NET Core MVC 之依赖注入 View
			ASP.NET Core 支持在试图中使用依赖注入.这将有助于提供视图专用的服务,比如本地化或者仅用于填充视图元素的数据.应尽量保持控制器和视图之间的关注点分离.视图所显示的大部分数据应该从控制器传入 ... 
