• flask中的Flask、request、render_temple、redirect和url_for


    学flask也有一个多星期了,对这个web框架也有了一点的了解,梳理一些基础的知识点,还是小白一只,代码写得比较low,若文章有错误的地方欢迎大佬随时指正,代码中被注释掉的代码是关于预防csrf,无视即可

    主程序脚本:

     1 from flask import Flask, render_template, request, redirect, url_for
     2 
     3 # from flask_wtf import CSRFProtect
     4 
     5 app = Flask(__name__)      # 声明一个Flask的类,__name__参数的作用是为了确定程序的根目录,以便获得静态文件的模板文件
     6 # app.config["SECRET_KEY"] = "12345678"
     7 #
     8 # CSRFProtect(app)
     9 
    10 
    11 @app.route('/')    # @app.router()是一个装饰器,它的作用就是把试图函数(可以简单的理解成就是它下面的函数)与某一个url(后面括号中的部分)绑定,当访问这个url时,就会运行这个视图函数
    12 def Helloworld():
    13     return redirect(url_for('home'))    url_for对视图函数进行反转,第一个参数为视图函数名,如果视图函数有参数,可加在后面,返回url,redirect是重定向到括号里面的url,这里为url_for的返回值
    14 
    15 
    16 @app.route("/regist/", methods=["get", "post"])  # methods指定请求这个url的方法,默认是get,这里指定使用get或post两种方式
    17 def regist():
    18     if request.method == "GET":
    19         return render_template("csrf_regist.html") # render_template对页面进行渲染,如果页面中存在待接受的参数,可将参数放在后面
    20 
    21     else:
    22         print(request.form)  # 如果请求方式为post,则在后台输出用户输入的信息。request可以获取到前端用户输入的信息,request.args获取get请求,request.form获取post请求
    23 
    24         return redirect(url_for('login'))  # 对login视图函数进行反转,并进行重定向
    25 
    26 
    27 @app.route("/login/", methods=["get", "post"])
    28 def login():
    29     if request.method == "GET":
    30         return render_template("csrf_login.html")
    31 
    32     else:
    33         print(request.form)
    34 
    35         return redirect(url_for('home'))
    36 
    37 
    38 @app.route('/home/')
    39 def home():
    40     return render_template('csrf_home.html')
    41 
    42 
    43 if __name__ == "__main__":
    44     app.run()

    首页(csrf_home.html)代码

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>csrf首页</title>
     6 </head>
     7 <body>
     8 <h1>欢迎来到首页,请选择登陆或注册</h1>
     9 <a href="{{ url_for('login') }}">登陆</a>    # 当用户点击登陆时,跳转到登陆页面
    10 <a href="{{ url_for('regist') }}">注册</a>    # 当用户点击注册时,跳转到注册页面
    11 </body>
    12 </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>
  • 相关阅读:
    PHP下安装memcached
    SQL Case when 的使用方法
    关于安装PHP补装PDO与PDO_MYSQL操作
    nginx 站点80跳443配置
    mysql 热备
    Ajax技术---核心XMLHttpRequest对象
    线性代数中一组基向量的标准正交化原理通熟易懂理解
    关于Quartus构建nios软核以及eclipse建立c语言工程以及成功下载到FPGA芯片过程遇到的各种问题以及解决方法详解
    ucosii操作系统内核源码学习第一篇
    Qt编译工程提示qt creator no rule to make target opencv2/core/hal/interface.h need by debug解决方法
  • 原文地址:https://www.cnblogs.com/liangshian/p/11199475.html
Copyright © 2020-2023  润新知