• flask入门小方法


      我是在pycharm中写的。那么需要在Termainal中cd 到当前文件所在的文件夹,在运行python py文件名

      一开始想用面向对象的方法来封装这些小模块,但发现在面向对象中要用到类属性,以及类的静态方法,也可能需要修改类属性的方法。果断放弃了

      那么我又试了函数的封装。还是不行,对一些技能的掌握还是差火候。因为有装饰器,那么在一个大的函数中使用函数嵌套也很麻烦。那么用一个装饰器装饰所有的封装函数的话,

      还是有局限性。不是说不行,说到底还是自己的技能掌握还是很差劲

      所以以失败告终。待下次技能升级再详细的将这些方法封装,就可以直接将代码放入了。最后只用到了程序入口,好尴尬。

      并且今天发现了在页面如果出不来的情况会有提示错误信息,就是自己英语水平还是有限,只能看懂一点。

      不墨迹了。

    代码如下

      

    # -*- coding: utf-8 -*-

    # 首先需要导包
    """
    导入重定向,站内跳转,json强转为json格式
    """
    from flask import Flask, redirect, url_for, jsonify

    app = Flask(__name__)

    # 使用Flask路由 指定网址和端口 指向
    # 方法一
    @app.route('/')
    def index():
    return "指定的网址输出的指定内容、hello world hello python hello flask"


    # 方法二
    # 给网址增加一个参数,输入网址,走到参数指定的网页
    @app.route('/hello')
    def hello():
    return "走到hello这个方法。输出页面内容"


    # 那么在上边的方法中也可以添加参数,,以<>的形式放入参数
    # 注意,在单输入world这个网址,会走不进去。要加参数。定义几个,就输入几个
    @app.route('/world/<id>/<name>') # 注意书写的格式要有'/'
    def world(id, name):
    print(id, name) # 在终端输出写入的参数
    return "这是网页显示的参数:%s, %s" % (id, name)


    # 使用重定向模块进行跳转
    # 参数传的是什么。那么就在网址结尾输入这个参数
    @app.route('/jump')
    def jump(): # 没有参数,并且需要用到跳转的包 redirect
    # redirect(location, code=302, Response=None):内部源码中所带的参数
    # return redirect('http://www.baidu.com/') # 还是要注意书写的格式,在网址的结尾加'/'
    return redirect('http://127.0.0.1:5000/hello') # 也可以跳转到本页面的哪个方法


    # 那么还有一个模块内封装了跳转本页面的方法
    # 需要导包url_fro 参数指定路由方法名称
    @app.route('/jumpOne')
    def re_url_in():
    """
    :return: 返回的是方法名。而不是网址
    """
    return redirect(url_for('index'))

    # 使用jsonify模块来让网页直接显示json数据。
    @app.route('/json')
    def re_json():
    # 可以先写一个dict
    json_dict = {
    'id':2,
    'title':'flask的一些简单的应用',
    'content':'flask的json格式化,会在页面直接展示json格式'
    }
    # 这里的页面返回的是二进制,之后在改进
    return jsonify(json_dict)

    '''
    这里有俩个前置访问,和俩个后置访问。
    '''
    # 在启动服务的第一次调用此方法。
    # (不管是谁。启动服务的第一次,就调用此方法一次,不会重复)
    @app.before_first_request # 前置访问1
    def before_first_request():# 我们就用方法名来定义函数名
    print("这里输出的会在服务中看到,优先级比下一个方法更高"

      这里的是在终端显示的结果,我直接复制过来了。

      * Restarting with stat
      * Debugger is active!
      * Debugger PIN: 240-758-350
      * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
      这里输出的会在服务中看到,优先级比下一个方法更高
      127.0.0.1 - - [19/Dec/2018 11:17:06] "GET /json HTTP/1.1" 200 -

    # 前置访问2 请求网址时
    @app.before_request
    def before_request():
    # 每刷新一次就会调用这个方法 也是在终端窗口显示。可以多刷新几次试试看
    print("再次输出的会是每一次请求调用这个方法")

    # 后置访问1。这个比较特殊,需要带参数
    @app.after_request
    def after_request(response):
    print("在请求之后,调用这个方法。")
    # 因为要有请求就有响应,那么需要返回response、不然会报错
    return response

    # 后置访问2 是记录错误的方法
    # 比如网络环境很差。容易丢包。需要将发生的事件或者错误传回日志中
    # 方便记录,对以后的搭建有好处。属于优化吧,我个人理解
    @app.teardown_request
    def teardown_request(e): # e = Error,服务出现的错误信息。
    # 那么不知道错误信息返回的是什么,我们需要字符串的形式返回这个错误信息
    print("打印服务器出现的错误信息调用这个方法。错误信息是:%s" %str(e))


    
    
    # 调用程序入口。运行起来更方便。
    if __name__ == '__main__':
    # 指定页面进入debug模式。方便调试。当正式上线时候默认False
    app.run(debug=True)
    # 如果端口有冲突,那么可以在指定一个没有用过的端口来运行自己搭建的服务
    # app.run(debug=True, port=5001)

      






  • 相关阅读:
    Django——不同版本
    04爬取拉勾网Python岗位分析报告
    24 两两交换链表中的节点
    UniGUI学习之UniImage(39)
    Delphi7开发简单文件传输
    Javaday03(补充day02运算符,流程控制)
    java中代码块,构造方法和普通方法的代码执行顺序
    +=隐式类型转换
    关于switch中的default
    Java操作JSON数据(5)--jettison操作JSON数据
  • 原文地址:https://www.cnblogs.com/binyuei/p/10142287.html
Copyright © 2020-2023  润新知