学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的更多相关文章

  1. Flask中全局变量的实现

    我们都知道在Flask中g,request,session和request是作为全局对象来提供信息的,既然是全局的又如何保持线程安全呢,接下来我们就看看flask是如何做到这点的.在源码中的ctx.p ...

  2. flask中的上下文_请求上下文和应用上下文

    前引 在了解flask上下文管理机制之前,先来一波必知必会的知识点. 面向对象双下方法 首先,先来聊一聊面向对象中的一些特殊的双下划线方法,比如__call__.__getattr__系列.__get ...

  3. [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)

    oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip i ...

  4. flask中的request和response

    1.request 1.request的常用成员 1.scheme : 获取请求方案(协议) 2.method : 获取本期请求的请求方式(重点) 3.args : 获取使用get请求方式提交的数据 ...

  5. 第三篇 Flask 中的 request

    第三篇 Flask 中的 request   每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的 为了了解Flask的request中都有什么东西,首先我们要写一个前 ...

  6. 第二篇 Flask 中的 Render Redirect HttpResponse

    第二篇 Flask 中的 Render Redirect HttpResponse   1.Flask中的HTTPResponse 在Flask 中的HttpResponse 在我们看来其实就是直接返 ...

  7. 转载 Flask中客户端 - 服务器 - web应用程序 是如何处理request生成response的?

    文章转载自https://blog.csdn.net/weixin_37923128/article/details/80992645 , 感谢原作者 当客户端向服务器发送一个请求时,服务器会将请求转 ...

  8. Flask最强攻略 - 跟DragonFire学Flask - 第三篇 Flask 中的 request 之 先知道有这么个东西

    每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的 为了了解Flask的request中都有什么东西,首先我们要写一个前后端的交互 基于HTML + Flask 写一 ...

  9. Flask最强攻略 - 跟DragonFire学Flask - 第二篇 Flask 中的 Render Redirect HttpResponse

    1.Flask中的HTTPResponse 在Flask 中的HttpResponse 在我们看来其实就是直接返回字符串 2.Flask中的Redirect 每当访问"/redi" ...

随机推荐

  1. docker使用,包括有nvidia-docker

    docker run 命令:https://www.runoob.com/docker/docker-run-command.html docker run -it ubuntu:15.10 /bin ...

  2. 20K掌握的技术要点?

    银四指的是每年的三四月份都是人才招聘的高峰期,由于跟新年和春运紧接,到人才市场,人都是满的,所以称为 :伴随的四月则称为银四.每一年职场迎来“ 银四”.总结做完了,得失看清了,奖金拿到了,“算账”往后 ...

  3. pindel及breandancer安装

    1.安装pindel需要依赖htslib https://github.com/samtools/htslib.git mv htslib htslib1 autoheader # If using ...

  4. Codeforces Round #554 (Div. 2) C 数论

    https://codeforces.com/contest/1152/problem/C 题意 a和b,找到k,使得lcm(a+k,b+k)最小(a,b:1e9) 题解 设gcd=gcd(a+k,b ...

  5. HMM AND CRF

    Structured Learning 4: Sequence Labeling:https://www.youtube.com/watch?v=o9FPSqobMys HMM crf 李宏毅老师讲的 ...

  6. JDK的小Bug你了解么?

    ​用了这么长时间的JDK了,有没有老铁发现JDK的bug呢?从最早版本的JDK1.2到现在普及开的JDK1.8以来,JAVA经历了这么多年的风风雨雨,依然坚持在一线上,是不是感觉很神奇,但是,有没有多 ...

  7. (三十四)golang--接口

    golang的多态特性主要体现在接口上: 主要优势:高内聚低耦合: package main import ( "fmt" ) type usb interface { start ...

  8. 【08】Nginx:安全优化 / 信息隐藏 / 请求限制 / 白名单

    写在前面的话 nginx 中主要的内容在前面的章节其实已经差不多了,接下都是一些小功能的实现以及关于 nginx 的优化问题.我们一起来探讨以下,如何把我们的 nginx 打造成为企业级应用. 安全优 ...

  9. yii2.0的学习之旅(二)

    前言:上一次我们简单认识了一下yii2.0安装,模型基本(增,删,改,查)操作 一.前后台数据交互 *如果你觉得默认的top样式太丑,可以这样关掉* *底部也可以这样关掉* (1)mvc合作操作数据 ...

  10. 【JS】---5 JS通过事件隐藏显示元素

    JS通过事件隐藏显示元素 在开发中,很多时候我们需要点击事件,才显示隐藏元素.那如何做到页面刚开始就把标签隐藏. 有两种方法: (1) display:none    <div id=" ...