一、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. JavaScript代码存放位置

    JavaScript代码存放位置 HTML的head中 HTML的body代码块底部(推荐) 由于Html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置 ...

  2. PCLVisualizer可视化类(2)

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=163 可视化点云颜色特征 所示,点赋予不同的颜色表征其对应的z轴值不同.PC ...

  3. LENOVO服务器批量升级BMC固件

    需求:通过服务器远程管理IP批量升级IMM.UEFI固件 工具:asu64.ipmitool.iflash64.cdc_interface.sh 下载:http://pan.baidu.com/s/1 ...

  4. sql获取上月同期

    select CONVERT(varchar(10), CONVERT(varchar(8),dateadd(month,-1,getdate()),23)+CONVERT(varchar(10),d ...

  5. SuperSocket使用自定义协议与服务端通信发送实例

    AsyncTcpSession tcpSession = new AsyncTcpSession(); public Encoding encoding = Encoding.GetEncoding( ...

  6. 如何修改html中列表项li所显示的圆点的颜色?,以及相关样式的设定

    这是li标签自带的圆点的颜色改变,代码如下: .centerbt li{ content:"."; color:gray; } 在标签li后面加入“@”符号,这里都会使用posit ...

  7. Note: File Recipe Compression in Data Deduplication Systems

    Zero-Chunk Suppression 检测全0数据块,将其用预先计算的自身的指纹信息代替. Detect zero chunks and replace them with a special ...

  8. java模拟简易按键精灵

    很多小伙伴们都有过抢课的经历,有时候抢不到自己想上的课,只能盼望有人退选,可是很多时候别人退选了,但是很快又被别人抢走了,我们不可能时刻盯着电脑, 这时候如果有一个抢课的程序岂不是很棒.. 出于这个目 ...

  9. Codeforces Round #524 (Div. 2) D(思维,构造)

    #include<bits/stdc++.h>using namespace std;long long dp[107];int main(){    int cnt=1;    dp[1 ...

  10. Java实例练习——基于UDP协议的多客户端通信

    昨天学习了UDP协议通信,然后就想着做一个基于UDP的多客户端通信(一对多),但是半天没做出来,今天早上在参考了很多代码以后,修改了自己的代码,然后运行成功,在这里分享以下代码,也说一下自己的认识误区 ...