当前位置:网站首页>[flask] static file and template rendering
[flask] static file and template rendering
2022-07-06 01:27:00 【Coriander Chrysanthemum】
Preface article :
Flask Departure and implementation are based on Flask The smallest application
Static files Static Files
Static files are mainly web Some pictures will be used in the application ,css file ,js Files, etc. to achieve an elegant web page . This is also an indispensable part of dynamic websites . that Flask Will solve it for you .
use Flask document : Just create a folder called static in your package or next to your module and it will be available at /static
on the application. in other words , Create in the project path static Folder , Or create at the same level of the module /static
Folder is ok ,flask You will find the contents of static files in these paths .
Static files also have a path in the system , Suppose there is a static/style.css
The file of . Then you can use the following methods to locate :
url_for('static', filename='style.css')
Template rendering Rendering Templates
If you use Python To build a through string splicing and so on HTML page , I'm afraid it will kill people . besides , You also have to consider injecting attacks, etc . With this demand , There is a concept of template engine , Popular said : This gadget can put html Code and flask Apply the returned data for dynamic integration , And then render it as html The code is displayed on the browser . If you know Java in JSP、Thymeleaf I should have understood .Flask The default template rendering engine is Jinja2.
Render a template ( One html) It uses render_template()
Method . What we need to do is to provide the name of the template and the variables to be passed to the template engine as keyword parameters . Here is a simple example of how to render a template :
from flask import render_template
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
return render_template('hello.html', name=name)
Flask Will be from templates
Find the corresponding file in the folder , This templates
Storage address and static
similar . You can refer to the following understanding :
- modular
/application.py /templates /hello.html
- package
/application
/__init__.py
/templates
/hello.html
Then for the template , We can use Jinja2 All functions of the template . This also has to know Jinja2 The document of :Jinja2.
The following is a template use case :
<!doctype html>
<title>Hello from Flask</title>
{
% if name %}
<h1>Hello {
{
name }}!</h1>
{
% else %}
<h1>Hello, World!</h1>
{
% endif %}
In the template , We can also visit config、request、session and g These objects and url_for()
and get_flashed_messages()
function . What are these? I will continue to introduce them later , In short, it can be used directly in the template .
Some pages have public sections , As header 、 Navigation and footer , If you can put the public part into a template , Other templates can be simply reused . This is the inheritance of the template (inheritance). This needs to be understood in depth , You can refer to the official .
Auto escape enabled , So if name
contain HTML, It will escape automatically . If we can trust a variable and know that it is safe HTML( for example , Because it comes from will wiki The tag is converted to HTML Module ), We can use Markup
Class or use | safe
The filter marks it as a security template .
Markup
A brief introduction to the use of class :
from markupsafe import MarkUp
print(Markup('<strong>Hello %s!</strong>') % '<blink>hacker</blink>')
# Markup('<strong>Hello <blink>hacker</blink>!</strong>')
print(Markup.escape('<blink>hacker</blink>'))
# Markup('<blink>hacker</blink>')
print(Markup('<em>Marked up</em> » HTML').striptags())
# Marked up » HTML
summary
Okay , I know so much today . Go and see the paper .
边栏推荐
- Leetcode1961. Check whether the string is an array prefix
- Une image! Pourquoi l'école t'a - t - elle appris à coder, mais pourquoi pas...
- 晶振是如何起振的?
- Tcpdump: monitor network traffic
- File upload vulnerability test based on DVWA
- Vulhub vulnerability recurrence 74_ Wordpress
- Leetcode 剑指 Offer 59 - II. 队列的最大值
- Nmap: network detection tool and security / port scanner
- Huawei converged VLAN principle and configuration
- Huawei Hrbrid interface and VLAN division based on IP
猜你喜欢
Blue Bridge Cup embedded stm32g431 - the real topic and code of the eighth provincial competition
Force buckle 9 palindromes
Electrical data | IEEE118 (including wind and solar energy)
[pat (basic level) practice] - [simple mathematics] 1062 simplest fraction
Test de vulnérabilité de téléchargement de fichiers basé sur dvwa
一圖看懂!為什麼學校教了你Coding但還是不會的原因...
General operation method of spot Silver
Daily practice - February 13, 2022
yii中console方法调用,yii console定时任务
Vulhub vulnerability recurrence 74_ Wordpress
随机推荐
ClickOnce 不支持请求执行级别“requireAdministrator”
Code Review关注点
Luo Gu P1170 Bugs Bunny and Hunter
[Yu Yue education] Liaoning Vocational College of Architecture Web server application development reference
Paging of a scratch (page turning processing)
Docker compose配置MySQL并实现远程连接
【SSRF-01】服务器端请求伪造漏洞原理及利用实例
2022 Guangxi Autonomous Region secondary vocational group "Cyberspace Security" competition and its analysis (super detailed)
The basic usage of JMeter BeanShell. The following syntax can only be used in BeanShell
Leetcode 208. 实现 Trie (前缀树)
Cglib dynamic agent -- example / principle
1791. Find the central node of the star diagram / 1790 Can two strings be equal by performing string exchange only once
有谁知道 达梦数据库表的列的数据类型 精度怎么修改呀
Paddle框架:PaddleNLP概述【飞桨自然语言处理开发库】
Some features of ECMAScript
SCM Chinese data distribution
Development trend of Ali Taobao fine sorting model
C web page open WinForm exe
Force buckle 1020 Number of enclaves
500 lines of code to understand the principle of mecached cache client driver