一、jinja2简单介绍

Jinja2是Python里一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能。其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能,这对大多应用的安全性来说是非常重要的。

他基于unicode并能在python2.4之后的版本运行,包括python3。

二、Django和Flask的比较

Django web框架:

优点:大而全,Forms组件,Admin,model ......
缺点:浪费资源,运行一个小型程序也会启动很多组件

Flask Web框架:
优点:短小精悍,session(存放在cookies里,f12可以查看),三方组件强大
缺点:运行稳定性较差

三、启动一个flask项目

三行代码:=》没有页面,但是已经启动了
  from flask import Flask
  app = Flask(__name__)
  app.run(debug = True)   里面的参数debug=True 是设置修改参数后项目自动重新启动。 debug级别比较低,修改一个字符项目都会重新启动。

六行视图函数
@app.route("/index") # 路由
def index(): # 视图函数
return "Hello OldBoy EDU" # Django HttpResponse

补充个小知识点:关于创建flask项目的模板文件创建

  新建一个模板文件,右击MARK_directory as ==》选择template folder==》上方选择template language==》选择jinja2,下方选择html

四、返回给页面的三种形式

response三剑客:
① 相当于httpresponse: return "hello"
jsonify({k:v}) 直接转换成json字符串 取代json.dumps()  注意:这里是jsonify,不是jsonfy,有个i。

render_template :
先导入再 return
templates 是模板的默认存放路径

redirect:
先导入再 return redirect("/login")

send_file():
先导入再 return send_file(打开文件并返回)  括号里参数是文件路径

五、request请求的一些数据获取

request:
args 获取url地址当中的参数  比如request.args.get('id')获取id的值
form POST请求体中的FormData中的数据
values 获取所有参数(url,formdata)
request.data content-type:jin   b"{username:jinwangba}"
request.json content-type:application/json 将数据序列化字典中
request.files 获取Formdata中的文件
jwbdf = request.files["jinwangbadefile"]
jwbdf.save(jwbdf.filename)

属性类的:
method 请求方式
url 完整地址
host 前半段儿 http://111.111.111.111:5000/
path 后半段儿 /login

六、模板语言:
Jinja2
{{ }} 非逻辑代码
{% %} 逻辑代码    又称为标签语法,函数,if,for都可以写入

路由:
methods=["POST","GET"]
endpoint="反向url地址"
url_for("反向url地址")
defaults={"nid":10}
动态路由参数/index/<int:arg>
url_for("endpoint",arg=123)

Flask的配置
1.Flask实例化配置
static_folder = 'static', # 静态文件目录的路径 默认当前项目中的static目录
static_url_path = None, # 静态文件目录的url路径 默认不写是与static_folder同名,远程静态文件时复用   访问url的时候需要填写的路径
template_folder = 'templates' # template模板目录, 默认当前项目中的 templates 目录

2.Flask对象配置
'SECRET_KEY': None, # 之前遇到过,在启用Session的时候,一定要有它
'SESSION_COOKIE_NAME': 'session', # 在cookies中存放session加密字符串的名字
'JSONIFY_MIMETYPE': 'application/json'

class FlaskConfigDebug(object):
DEBUG = True   和app.run(debug=True)是一样的
SECRET_KEY = "DragonFire"

class FlaskConfigTesting(object):
TESTING = True
SECRET_KEY = "DragonFire"

app.config.from_object(FlaskConfigDebug)

Flask蓝图(Blueprint)
蓝图就是另一种形式的Flask实例
detail_blueprint = Blueprint("serv",__name__, template_folder="serv_temp",
static_folder="serv_static",
static_url_path="/serv_static",url_prefix="/servs")

Flask特殊装饰
@app.template_folder() 类偏函数的方法
@app.template_global() 全局函数
@app.errorhandler(405)
def my_405(args)

@app.before_request
def be1():
return None 是继续
return not None 是中断

@app.after_request
def af1(res):
return res

# be1 - be2 - af2 - af1
# be1 - af2 - af1

Flask中的session
app.config["SECRET_KEY"] = "asdfasdfasdf"

Flask中的 CBV
class Login(views.MethodView):
def get(self):
return render_template("template.html")

def post(self):
username = request.form.get("username")
password = request.form.get("password")
if username == "yinwangba" and password == "jinwangba":
return "登录成功"

return render_template("template.html",msg="登录失败滚吧")

app.add_url_rule("/login",endpoint=None,view_func=Login.as_view(name="login"))

自己练习:
基于session + Blueprint 实现一个学生管理 增删改查分别是四个蓝图

flask之jinja2模板语言的更多相关文章

  1. 【Flask】 Jinja2模板语言

    Jinja2 Jinja2是Python Web编程中的主流模板语言.因为flask是基于Jinja2和Werkzeug发展而来,在安装flask的时候jinja2自动就被装在上面了. 之前提到了很多 ...

  2. Flask最强攻略 - 跟DragonFire学Flask - 第四篇 Flask 中的模板语言 Jinja2 及 render_template 的深度用法

    是时候开始写个前端了,Flask中默认的模板语言是Jinja2 现在我们来一步一步的学习一下 Jinja2 捎带手把 render_template 中留下的疑问解决一下 首先我们要在后端定义几个字符 ...

  3. 第四篇 Flask 中的模板语言 Jinja2 及 render_template 的深度用法

    是时候开始写个前端了,Flask中默认的模板语言是Jinja2 现在我们来一步一步的学习一下 Jinja2 捎带手把 render_template 中留下的疑问解决一下 首先我们要在后端定义几个字符 ...

  4. 3,Flask 中的模板语言 Jinja2 及 render_template 的深度用法

    Flask中默认的模板语言是Jinja2 现在我们来一步一步的学习一下 Jinja2 捎带手把 render_template 中留下的疑问解决一下 首先我们要在后端定义几个字符串,用于传递到前端 S ...

  5. Flask 中的模板语言 Jinja2 及 render_template 的深度用法

    是时候开始写个前端了,Flask中默认的模板语言是Jinja2 现在我们来一步一步的学习一下 Jinja2 捎带手把 render_template 中留下的疑问解决一下 首先我们要在后端定义几个字符 ...

  6. 初识Flask框架,以及Flask中的模板语言jinjia2和Flask内置的Session

    一.web框架的对比 首先我们先来看下比较火的web框架 1.Django: 优点:大而全,所有组件都是组织内部开发高度定制化,教科书级别的框架 缺点:大到浪费资源,请求的时候需要的资源较高 2.Fl ...

  7. Flask中的模板语言jinja2

    jinja2介绍 jinja2是Flask作者开发的一个模板系统,起初是仿django模板的一个模板引擎,为Flask提供模板支持,由于其灵活,快速和安全等优点被广泛使用. jinja2的优点 jin ...

  8. flask的jinja2模板中过过滤器的相关小内容

    jinja2模板中有自带的过滤器,有需要直接拿来使用.也可以自己定义过滤器 在过滤器中,有一些常见得操作及关键字.有对字符串的操作,还有对大小写转换的操作.还有对list的操作 过滤器的语法 {# 过 ...

  9. flask如何设置模板语言Jinjia?如何查看路由视图函数映射?

    首先flask的模板和静态文件命名必须是确定的templates和static pycharm的模板语言设置

随机推荐

  1. React组件详细介绍及其生命周期函数

    组件的详细说明 通过Reac.createClass({...})创建组件的时候,应该有一个render()方法,也可以在其中添加生命周期函数. render方法 当调用该方法的时候,会检测this. ...

  2. [51nod1094]和为k的连续区间

    法一:暴力$O({n^2})$看脸过 #include<bits/stdc++.h> using namespace std; typedef long long ll; ],sum[]; ...

  3. Spring入门第三课

    属性注入 属性注入就是通过setter方法注入Bean的属性值或依赖的对象. 属性植入使用<property>元素,使用name属性指定Bean的属性名称,value属性或者<val ...

  4. C#的递归函数

    我的理解:函数内部把自己当另一个函数来调用 其实还是调用的他自己 递归函数必须有结束条件,否则就是死循环

  5. cookie 单值设置

  6. shell脚本知识点汇总

    sed中在对内容进行修改时,有时候需要引用外部变量的值或者获取一个shell命令执行的结果,以便达到更加可观的输出结果 1.sed中使用变量替换1)sed命令使用双引号的情况下,使用$var直接引用[ ...

  7. PAT L2-014【二分】

    思路: 最后发现对当前列车比我大的编号的栈有没有就好了,所以开个vector存一下,然后二分一下vector找一下第一个比我大的数就好了 #include <bits/stdc++.h> ...

  8. luogu3224 永无乡(动态开点,权值线段树合并)

    luogu3224 永无乡(动态开点,权值线段树合并) 永无乡包含 n 座岛,编号从 1 到 n ,每座岛都有自己的独一无二的重要度,按照重要度可以将这 n 座岛排名,名次用 1 到 n 来表示.某些 ...

  9. ICP备案接入商

    1. 什么是ICP备案中的接入商 ICP备案系统中所说的接入商:是指为您提供虚拟主机.服务器托管或者专线接入的公司. 现在ICP备案的原则是“谁接入谁负责”,接入商一般都有自己的电子平台和工信部对接, ...

  10. 1、kvm的vnc服务关闭、设置网络模式

    一.kvm的vnc服务关闭 1.关闭虚拟机 virsh shutdown privi-server 2.virsh edit privi-server找到下面内容进行删除 <graphics t ...