flask基础学习资料1

可以利用Jinja2模板引擎技术,而不需要从函数返回硬编码HTML。

Jinja2模板引擎使用以下分隔符来从HTML转义。

  • {% ... %} 用于多行语句
  • {{ ... }} 用于将表达式打印输出到模板
  • {# ... #} 用于未包含在模板输出中的注释
  • # ... ## 用于单行语句

来自客户端网页的数据作为全局请求对象发送到服务器。要处理请求数据,请求对旬应该从Flask模块导入。

请求对象的重要属性如下所列 -

  • form - 它是包含表单参数及其值的键和值对的字典对象。
  • args - 解析问号(?)后的URL部分查询字符串的内容。
  • cookies - 保存Cookie名称和值的字典对象。
  • file - 与上传文件有关的数据。
  • method - 当前请求方法。

在URL规则中指定http方法。URL映射的函数接收到的表单数据可以以字典对象的形式收集,并将其转发给模板以在相应的网页上呈现它。

模板其实是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,告诉模板引擎其具体的值需要从使用的数据中获取
使用真实值替换变量,再返回最终得到的字符串,这个过程称为“渲染”
Flask是使用 Jinja2 这个模板引擎来渲染模板
视图函数只负责业务逻辑和数据处理(业务逻辑方面)
而模板则取到视图函数的数据结果进行展示(视图展示方面)
代码结构清晰,耦合度低

模板:

Jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎,并扩展了其语法和一系列强大的功能,其是Flask内置的模板语言。
模板语言:是一种被设计来自动生成文档的简单文本格式,在模板语言中,一般都会把一些变量传给模板,替换模板的特定位置上预先定义好的占位变量名。
官方文档

Flask提供的 render_template 函数封装了该模板引擎
render_template 函数的第一个参数是模板的文件名,后面的参数都是键值对,表示模板中变量对应的真实值。

    {{}} 来表示变量名,这种 {{}} 语法叫做变量代码块

<h1>{{ post.title }}</h1>

过滤器的本质就是函数。有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化、运算等等,而在模板中是不能直接调用 Python 中的某些方法,那么这就用到了过滤器。

链式调用

{{ "hello world" | reverse | upper }}

 

{% for k, v in user.items() %}
        <p>{{ k }}: {{ v }}</p>
    {% endfor %}

{% if %} <p>{{ k }}: {{ v }}</p> {% endif %}

控制代码块主要包含两个:

- if/else if /else / endif
- for / endfor

代码复用

宏 —- 类似python中的函数

创建:
        {% macro 标签名(key=value)%} {% end macro %}

继承 、包含、

总结:

宏(Macro)、继承(Block)、包含(include)均能实现代码的复用。
继承(Block)的本质是代码替换,一般用来实现多个页面中重复不变的区域。
宏(Macro)的功能类似函数,可以传入参数,需要定义、调用。
包含(include)是直接将目标模板文件整个渲染出来。

跨站攻击:

 

Cookie以文本文件的形式存储在客户端计算机上。 其目的是记住和跟踪与客户使用有关的数据,以获得更好的访问体验和网站统计。

Request对象包含一个cookie的属性。 它是所有cookie变量及其对应值的字典对象,客户端已发送。 除此之外,cookie还会存储其到期时间,路径和站点的域名。

在Flask中,cookies设置在响应对象上。 使用make_response()函数从视图函数的返回值中获取响应对象。 之后,使用响应对象的set_cookie()函数来存储cookie。

重读cookie很容易。 可以使用request.cookies属性的get()方法来读取cookie。

一、request 请求

from flask import request


@blue.route('/getrequest/', methods=['GET', 'POST'])
def get_request():
    if request.method == 'GET':
        args = request.args
    else:
        form = request.form
    return '获取request'

1.request的常用属性

a)methods

默认的请求方式只有GET,其他请求都需要通过参数methods进行指定。

methods=['GET', 'POST']

b)args:获取GET请求参数

flask中,要获取get请求的参数,不是通过request.GET.get(),而是通过request.args.get()获取。

request.agrs.get('参数名')

c)form:获取POST请求参数

flask中,要获取get请求的参数,不是通过request.POST.get(),而是通过request.form.get()获取。

request.form.get('参数名')

d)files 获取上传文件

e)base_url 获取请求路径

f)host 获取ip和端口

二、make_response 响应

make_response(),相当于DJango中的HttpResponse。

1.返回内容

from flask import make_response

@blue.route('/makeresponse/')
def make_response_function():
    response = make_response('<h2>羞羞哒</h2>')
    return response, 404

2.返回页面

from flask import make_response

@blue.route('/makeresponse/')
def make_response_function():
    temp = render_template('hello.html')
    response = make_response(temp)
    return response

>>>注意:make_response 想要返回页面,不能直接写做:make_response('hello.html'),必须用render_template('hello.html')形式。

3.返回状态码

>>>方式一:在make_response()中传入状态码

from flask import make_response

@blue.route('/makeresponse/')
def make_response_function():
    temp = render_template('hello.html')
    response = make_response(temp, 200)
    return response

>>>方式二:直接return状态码

from flask import make_response

@blue.route('/makeresponse/')
def make_response_function():
    temp = render_template('hello.html')
    response = make_response(temp)
    return response, 200

三、redirect 跳转

flask中的 redirect 相当于 DJango中的 HttpResponseRedirect。

1.参数是url形式

from flask import redirect


@blue.route('/redirect/')
def make_redirect():
    return redirect('/hello/index/')

2.参数是 name.name 形式

url_for 相当于reverse,name.name 相当于django中的namespace:name,第一个name是初始化蓝图时的参数名,第二个name是函数名

 

from flask import redirect


@blue.route('/redirect/')
def make_redirect():
    return redirect(url_for('first.index'))

与Cookie不同,会话数据存储在服务器上。 会话是客户端登录到服务器并注销的时间间隔。 需要在此会话中进行的数据存储在服务器上的临时目录中。

与每个客户端的会话分配一个会话ID。 会话数据存储在cookie顶部,服务器以加密方式签名。 对于这种加密,Flask应用程序需要一个定义SECRET_KEY

会话对象也是一个包含会话变量和关联值的键值对的字典对象。

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值