本人以前是做.net开发的,现在业余时间学了下python的flask,发现教程上说的前端都用Jinja2模板引擎,感觉一点都不习惯,我前端习惯用AngularJs开发,现在不都是前后端分离的吗?
教程上用的Jinja2模板,把路由@app.route('/')映射到index.html就是
@app.route('/')
def index():
render_template('index.html')
index.html里面就1行代码'<h1>Hello!!!</h1>'
如果我不用这模板引擎,而用一个完整的html页面(包括css、js等),该怎么做啊?
@app.route('/')
def index():
return #这里怎么写?
另外再请教下,好像web.py、tornado也是用模板引擎的,感觉这种形式前后端耦合太紧了,有什么web框架不是用模板的吗?
谢谢!!!
黄舟2017-04-11 13:06:13
@app.route('/')
def index():
return render_template('hello.html')
直接这样即可,但要注意的是要把 hello.html 放在根目录的templates
文件夹下,Flask 会在templates
文件夹内寻找模板
PHP中文网2017-04-11 13:06:13
from flask import jsonify
@app.route('/')
def index():
res = {'foo':'bar'}
return jsonify(res)
# return jsonify(foo='bar') # 这样也可以
PHPz2017-04-11 13:06:13
return RAW字符流 或 Response对象
可以返回 html代码, 也可以返回 json字符串等
模版的话, 逻辑也是先模板引擎解析得到字符串流, 然后返回
html = TplEngine.display("index.html", *globals(), *locals())
return html
@app.route('/')
def index(response):
// 使用response context
response.headers['Content-Type'] = 'application/json;charset=utf8'
res = {'foo':'bar'}
return jsonify(res)
PHP中文网2017-04-11 13:06:13
@app.route('/')
def index():
return ```
<!DOCTYPE html>
<html lang="en">
<head>
<title>!!!</title>
<meta charset="utf-8">
<style>
* {
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<p>就这样</p>
</body>
</html>```
天蓬老师2017-04-11 13:06:13
render_template
使用的是 jinja
模板css
需要放在 static
目录下
在html中 {{ url_for('static', 'index.css') }}
如果不用render_template
那就直接 返回字符串