一、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. SSM集成shiro 致使Controller无法自动注册service

    由于shiro在web.xml中配置属于过滤器,其中在web.xml中的加载顺序为: <context-param>(上下文) > listener > filter > ...

  2. 9、scala函数式编程-集合操作

    一.集合操作1 1.Scala的集合体系结构 // Scala中的集合体系主要包括:Iterable.Seq.Set.Map.其中Iterable是所有集合trait的根trai.这个结构与Java的 ...

  3. Entity Framework Code-First(9.10):DataAnnotations - NotMapped Attribute

    DataAnnotations - NotMapped Attribute: NotMapped attribute can be applied to properties of a class. ...

  4. hdu1063

    #include<iostream> #include<string> using namespace std; struct BigReal //高精度实数 { int le ...

  5. redis系列:通过队列案例学习list命令

    前言 这一篇文章将讲述Redis中的list类型命令,同样也是通过demo来讲述,其他部分这里就不在赘述了. 项目Github地址:https://github.com/rainbowda/learn ...

  6. Postman使用-1

    文章来源:http://www.cnplugins.com/tool/specify-postman-methods.html https://www.cnblogs.com/Skyyj/p/6856 ...

  7. Vue中使用jquery

    在vue项目中,需要实现某些特定的功能时,使用mvvm模式不易实现.因此引入jquery包来完成需求 npm install jqueryimport $ from jquery //在需要使用的页面 ...

  8. PAT L2-006【二叉树中序后序构造树】

    #include<bits/stdc++.h> using namespace std; typedef long long LL; struct BT{ int w; BT *L; BT ...

  9. PAT 1087【二级最短路】

    二级最短路+二级最短路,就是DP过程吧. 代码稍微注释一些,毕竟贴代码不好.. #include<bits/stdc++.h> using namespace std; typedef l ...

  10. .frm和.ibd恢复数据

    昨日晚上开发告诉我不小心truncate两个表的数据,要求还原.结果在阿里云上找到了备份内容,结果是物理备份文件.frm..ibd.心中一万个草泥马啊..没办法,开始还原吧. 1.查看测试机Mysql ...