zoukankan      html  css  js  c++  java
  • 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. 注意:路由路径不能重复,用户通过唯一路径访问特定的函数或者网页文件

  • 相关阅读:
    [Go] 实现websocket服务端
    [PHP] php使用event扩展的io复用测试
    [MySQL] 使用force index强制使用索引
    [Go] 使用net包作为tcp客户端读取http
    [Go] golang中的包管理
    [Go] 解决golang.org模块无法下载的问题
    [日常] linux设置环境变量
    [Go] golang定时器与redis结合
    [Go] golang定时器的使用
    [Linux] linux路由表
  • 原文地址:https://www.cnblogs.com/instead-everyone/p/13770011.html
Copyright © 2011-2022 走看看