Flask 之三剑客 及模板 基础

一.向前端返回

from flask import Flask,render_template,redirect,jsonify,send_file,request
app=Flask(__name__)          __name__使flask能找到本地文件
app.run(host="127.0.0.1",port=8888,debug=True)     debug  变更代码后 自动重启

   1.Httpresponse

         @app.route("/",methods=["GET","POST"])        1.添加路由方法:在函数上加装饰器 指定methods 后只有指定的方法才
          def index():                                                               会被允许
                return "hello world "                                       2.可以直接返回  一个字符串

   2.render_template

         return render_template('login.html')                            返回一个html

            inp = Markup("<input type='text'>")

            return render_template("index.html",stu={'a':1,'b':2},inp=inp)       传值到html   字典 和  标签需要用Markup 修饰

  3.redirect

      return redirect('/login')       重定向

   4.send_file ,  jsonify
     return  send_file("1.mp4")                  打开并传输文件  可以是mp3  mp4   文本   jpg        (括号内 是文件路径)
     return jsonify( {"name":"JWB","age":73} )            原理是设置响应头  Content-Type: application/json  返回一个json数据

二.request 对象     

           <Request 'http://127.0.0.1:8888/login' [GET]>

    1.request.method          请求方式        GET 
    2.request.form               存储的是所有FormData中的所有数据         ImmutableMultiDict([('user', 'wyc'), ('password', '123')])

       1. request.form.get('user')   可以get获取key对应值空返回 None      2. request.form.to_dict()      可以转换为字典 再拿  {} 

    3.request.args               存储的是所有URL中的所有数据             ImmutableMultiDict([])   get拿值
    4.request.json               存放在request.json        当请求头是Content-Type: application/json
    5.request.data               当Content-Type无法被解析时,存放原始数据     

    6.request.values           存储url form 参数            CombinedMultiDict([ImmutableMultiDict([]), ImmutableMultiDict([])])         
    6.request.url                  请求地址         
    7.request.path               url路由地址           /login   域名后面的
    8.request.host               主机地址              http://127.0.0.1:8888/login
    9.request.host_url         将主机地址转换为httpurl            http://127.0.0.1:8888/

三.模板 语言

STUDENT_DICT = {
    1: {'name': 'Old', 'age': 38, 'gender': '中'},
    2: {'name': 'Boy', 'age': 73, 'gender': '男'},
    3: {'name': 'EDU', 'age': 84, 'gender': '女'}
}
STUDENT_LIST = [
    {'name': 'Old', 'age': 38, 'gender': '中'},
    {'name': 'Boy', 'age': 73, 'gender': '男'},
    {'name': 'EDU', 'age': 84, 'gender': '女'}
   ]
@app.route("/")
def index():
    return render_template("index.html",dic=STUDENT_DICT,list=STUDENT_LIST)
    {% for d in list %}
        <tr>
            <td>{{ d.name }}</td>
            <td>{{ d.get('age') }}</td>
            <td>{{ d['gender'] }}</td>
        </tr>
    {% endfor %}
    {% for id,d in dic.items() %}
        <tr>
            <td>{{ id }}</td>
            <td>{{ d.get('name') }}</td>
            <td>{{ d['age'] }}</td>
            <td>{{ d.gender }}</td>
        </tr>
    {% endfor %}

   当传入值分别是 列表 和 字典时   字典有三种方法取值

     字典 可以.items()  先取值值     一样有三种方法

   二.模板 复用 继承  宏

         1.复用 先写一个 经常复用的  代码段my_block.html    :  <h1>我是一个block</h1>

             2.然后其他html 页面就可以使用     :  {% include 'my_block.html' %}      使用这个代码块

         2. 继承            

        {% block content %}          

        {% endblock %}                写在经常复用的mb.html里       提供一个接口,让其他儿子模板可以接入进来,往这里插自己的东西

         {% extends 'mb.html' %}      写在儿子模板第一行       继承这个父亲模板 

         {% block main %}                    下面这个就是往父亲模板插入的东西

         <h1>我接入父模板/h1>

         {% endblock %}

         3.宏

{% macro my_input(na,tp) %}
    <input type="{{ tp }}" value="{{ na }}">
{% endmacro %}

{{ my_input("uname","submit") }}

         4.flask中 的文本替换

@app.template_global()      全局函数   每个模板都能使用
def ab(a,b):
    return a+b

@app.template_filter()           偏函数
def axb(a,b):
    return a*b

{{ ab(6,9) }} 
{{ ab(3,4) | axb(834473503) }}    

      5.Session
         from flask import session
         app.secret_key = "yinjiaodawangba"                       flask原始session         必须加secret_key 
         session["user"] = "jwb"                                              Flask中的session是保存在 cookie 中的  默认名称是session
         session.get("user")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值