python之flask框架

  python之flask框架:

一:flask初始化步骤:

  1. 创建flask项目

  2. 导入flask文件

  3. 创建一个Flask类,传入name参数

  4. 使用run实例启动web服务

  5. 使用@app.route装饰器将路由映射到视图函数进行路由解析

  6. 编写主要执行的程序文件或者函数

#因为后期会用到模板还有request命令,所以在这里就全部写上了,render_template是渲染模板
#注意:一定要开启debug模式,这样可以很清晰的查找错误
from flask import Flask,render_template
​
#导入Flask框架
app = Flask(__name__)
​
#路由解析,通过用户访问的路径,匹配相应的函数,‘/’代表着当前路径,也就是下面的函数
@app.route('/index')
def hello_world():
    return 'Hello World!'#进行服务器启动
if __name__ == '__main__':
    app.run()

 

二:路由解析格式:

注意:使用pycharm中的flask模板就相当于是开启了一个本地服务器,这个同java中Servlet连接tomcat服务器是类似的效果,在语法使用上面可以参考一下vue模板

  1. flask默认网址是本地,也就是http://127.0.0.1:5000

  2. 默认当前路径调用函数执行网页:@app.route("/"),也就是上面的本地IP

    @app.route("/")
    def hello ():
        return "你好"

     

  3. 带着参数,在本地IP下其他路径所得到的网页:

    #这里的路径test随便写就好,但是后面的name就是需要传入的参数,必须用尖括号来包括name变量
    @app.route("/test/<name>")
    @app.route("/test/<int:id>")#限制传入参数的格式
    #上面传递了参数,那么下面就一定要接受一个参数
    def hel(name):
        return "hello :%s"%name

     

  4. 返回用户渲染后的网页文件,render_template

    1.首先,创建创建一个h5文件,放置路径必须得在template当中,否则不会返回渲染文件
    from flask import render_template
    @app.route("/")#因为还是在这个项目中,调用下面的函数,暂时不需要改变路径
    def index():
        #注意:下面必须用渲染器包含网页文件名
        return render_template("index.html")

     

  5. h5与python在falsk模板上面交互相应实现动态界面:

    '''前言:
        1.向页面传递一个参数:
            time=datatime.data.today()获取当前时间
            #这里的var在h5中会有原型
            return render_template("index.html",var=time)
        2.向页面传递一个列表类型:
            name=["小张","小王","小赵"]
            return render_template("index.html",list=name)
        3.向页面传递一个元组类型:
            task={"task":"wash room","time":"Three hours"}
            return render_template("index.html",task=task)
    '''

      在html的内容

    <!--在h5上面交互伪代码:-->
    <body>
        <!--使用双大括号来表示传递进去的参数-->
        今天是{{var}}<br/>
        
        <!--用大括号和百分号括起来是控制结构,用来操作列表或者元组-->
        <!--里面内容同python语言最大的区别就是有一个end结束标识,常见的有for,if-->
        {%for data in list %}
            <li>{{data}}</li>
        {%endfor%}<!--表示结束-->
        
    </br>
        <table border="1">
            <!--当传递的是元组的时候,需要使用迭代器-->
            {%for key,value in task.items()%}<!--注意:这里items是个函数,所以需要加括号-->
            <tr>
                <th>{{key}}</th>
                <td>{{value}}</td>
            </tr>  
            {%endfor%}
        </table>
    </body>

     

  6. 表单提交:web交互

    #首先,需要两个h5界面:一个用来给用户操作的界面,一个是服务器返回给网页的信息界面:
    @app.route('/register')
    def register():
        return render_template("register.html")
    ​
    @app.route('/result',methods=['POST','GET'])#这里必须写名method是什么
    def result():
        if request.method=='POST':
            result=request.form#这里就是
            return render_template("result.html",result=result)#传递表单

    <!--h5界面:注意,既然要提交,那么就会有post和get提交,而且提交表达的网址必须是服务器接收信息并返回相应的地址--><!--register.html-->
        <!--这里的响应地址必须是服务器相应的html地址-->
    http://localhost:5000/result=={{url_for('result')}}
        <form action="{{url_for('result')}}",method="post">
            <p>姓名:<input type="text" name="name"></p>
            <p>年龄:<input type="text" name="age"></p>
            <p>性别:<input type="text" name="gender"></p>
            <p>地址:<input type="text" name="address"></p>
            <p><input type="submit",value="提交"></p>
        </form><!--result.html-->
    <body>
        <table border="1">
            {%for key,value in result.items()%}
                <tr>
                    <th>{{key}}</th>    
                    <td>{{value}}</td>
                </tr>
            {%endfor%}
        </table>
    </body>

     

    注意:form表单中的action元素可以可以写为{{url_for('result')}},表示当前路径下的result文件,当然只有在web开发的时候才可以哦

  7. 注意:路由路径不能重复,用户通过唯一路径访问特定的函数或者网页文件

posted @ 2020-10-05 15:15  焕不涣  阅读(438)  评论(0编辑  收藏  举报