Flask入门及如何反向解析url

前言:
    flask 轻量级框架 WEB框架
    AJAX  在web中完成异步请求和响应
    DJango 重量级的web框架

Python Web

1.静态网页和动态网页
    1.静态网页:无法与服务器做动态交互的网页
    2.动态网页:可以和服务器做动态交互的网页

2.web与服务器
    1.web:网页(html,css,js)
    2.服务器
        能够给用户提供服务的机器就称为服务器
        1.硬件与软件
            硬件:一台主机
            软件:一个能够接收用户请求并响应的程序
                1.APACHE
                2.TOMCAT
                3.IIS(internet information service)
                4.Nginx
        2.作用:
            1.存储web上的信息
            2.能够处理用户的请求(request)并给出响应(response)
            3.执行服务器端程序
            4.具备一定的安全功能

3.框架
    1.什么是框架
        框架实际是一个为了解决某一开放性问题而存在的一种程序结构
        框架本身提供了一些基本的功能
        我们只需要在基础的功能上搭建自己的操作就可以了.

    2.python web框架
        1.flask-轻量级
        2.webpy-轻量级
        3.tornado-异步框架
        4.Django-重量级框架
    3.框架模式
        1.MTV
            M:Models:模型层,主要负责数据库建模
            T:Templates:模板,用来处理用户的显示内容  如:html
            V:Views,视图,处理与用户打交道的内容(请求和响应)
        2.MVC
            M:Models:模型层,主要负责数据库建模
            V:Views,视图处理用户的显示内容
            C:Controller,控制器,用于与用户交互的部分内容(请求和响应)
    4.Flask框架
        1.什么是Flask框架
            Flask是一个基于Python并且依赖于jinja2模板引擎和Werkzeug WSGI服务的一个微型框架
                WSGI:WEB SERVER GATEWAY INTERFACE(WEB服务网管端口)
            Flask是采用MTV的框架模式

        2.安装Flask
            1.查看已安装的Flask版本
            在python的交互模式中:
                1.import flask
                    没报错:已经安装Flask,可以继续查看版本
                2.flask _version_
                    查看已安装的版本
            2.安装Flask
            sudo pip3 install flask

        3.Flask初始化详情
            见代码....

from flask import Falsk

app = Flask(__name__)

@app.route("/")

def index():
    return "hello"


if __name__ == "__main__":
   # app运行falsk的应用(启动flask的服务),默认在本机开启的端口是5000,port = 5555,
   # 在制定端口启动程序端
   # debug = True 将启动模式更改为调试模式(开发环境中推荐写Ture,生产环境中必须改为False)
   app.run(debug=True)

    5.Flask -路由(route)
        1.什么是路由
            客户端发送请求给web服务器,web服务器再将请求发送给Flask程序实例
            程序实例需要知道每一个url请求地址,到python运行函数的一个映射.
            处理url和函数之间的关系的程序就是"路由"
        2.路由的体现
            在flsak中,路由是通过@app.route 装饰器来表示的
            1.路由的基本表示
                @app.route('/')
                def index():
                    return "xxx"
              
                #localhost:5000/admin/lodin
                @app.route('/admin/login')
                def admain_login():
                    return "xxx"
            2.带参数的路由
                路由中可以携带参数表示不同的数据
                http://localhost:5000/show/laowang
                http://localhost:5000/show/wangwc
                http://localhost:5000/show/laowang.gebi

                1.基本带参路由
                    @app.route('/show/<name>')
                    def show(name):
                        name:表示的就是从地址栏上传递过来的数据
                        return 'xxx'

                2.带多个路径的路由
                    http://localhost:5000/show/laowang/36

                    @app.route("/show/<name>/<age>")

                    def show(name,age):
                        return "xxx"

                3.指定参数类型的路由
                    @app.route("/show/<name>/<int:age>")
                    def show(name,age):
                        name:字符串
                        age:整数

                    int:类型转换器
                    flask中支持的类型转换器:
                        类型转换器     作用
                          缺省         字符串,不能有斜杠("/")
                          int:           整型
                          float:        浮点型
                          path:       字符串,可以有斜杠('/')

            3.多个URL的路由匹配
                为多个访问地址匹配同一个视图处理函数
                @app.route('/地址1')
                @app.route('/地址2')
                ...
                def index():
                    return "xxx"


            4.路由中设置http的请求方法
                flask路由也允许设置对应的请求方法(post/get),只有将匹配上请求方法的路径才能交给对应的视图处理函数去处理
                所有的路由,默认只接受get请求

                @app.route("/xxx/xxx",methods=["POST"])
                def xxx:
                    pass

                @app.route("/xxx/xxx",methods=["GET","POST"])
                def xxx:
                    #该函数既能接受get请求也能接受post请求
                    pass
            5.URL的反向解析
                正向解析:
                    程序自动解析,根据@app.route()中的访问路径,来匹配处理函数

                反向解析:
                    通过视图处理函数的名称自动生成对应的访问路径

                在flask 中实现反向解析的话要使用:
                    url_for(funName,args)
                        funName:要生成的地址的函数名
                        args:该地址中需要的参数

from flask import Flask, url_for

app = Flask(__name__)

@app.route('/index')
def index():
    return "<h1>这是首页</h1>"

@app.route('/admin/login/form/show/<name>')
def show(name):
    return "参数的值为:%s" % name

@app.route('/url')
def url():
    #通过index()解析出对应的访问路径
    url_index = url_for('index')
    print("index():"+url_index)
    #通过show(name)解析出对应的访问路径
    url_show = url_for('show',name='wangwc')
    print("show(name):"+url_show)
    return "<a href='%s'>访问show(name)</a>" % url_show


if __name__ == "__main__":
    app.run(debug=True)

猜你喜欢

转载自blog.csdn.net/zhangshuaijun123/article/details/83420319
今日推荐