±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚsegmentfault,ÎÄÕ½éÉÜÁËʹÓÃtemplateäÖȾģ°åʱ£¬´«µÝ¹Ø¼ü×Ö²ÎÊýÒÔ¼°Ä£°åÖеĺêµÈÏà¹ØÄÚÈÝ¡£ |
|
Ô¤ÈÈ
ÔÚäÖȾģ°åµÄʱºò£¬Ä¬ÈÏ»á´ÓÏîÄ¿¸ù·¾¶ÏµÄtemplatesĿ¼Ï²éÕÒÄ£°å
Èç¹ûÏëÒªÖ¸¶¨Ä£°å·¾¶µÄʱºò£¬¾ÍÔÚ³õʼ»¯APPµÄʱºò£¬ÕâÑù²Ù×÷¼´¿É£º
app = Flask(__name__,template_folder='C:/templates')
#template_folder¿ÉÒÔÖ¸¶¨Ä£°åλÖà |
Ä£°å´«²Î
ÔÚʹÓÃrender_templateäÖȾģ°åµÄʱºò£¬¿ÉÒÔ´«µÝ¹Ø¼ü×Ö²ÎÊý£¬ÒÔºóÖ±½ÓÔÚÄ£°åÖÐʹÓþͿÉÒÔÁË
Èç¹û²ÎÊý¹ý¶àµÄ»°£¬ÄÇô¾Í¿ÉÒÔ½«ËùÓеIJÎÊý·Åµ½Ò»¸ö×ÖµäÖУ¬È»ºóÔÙ´«Õâ¸ö²ÎÊýµÄʱºòʹÓÃ**½«×Öµä´òÉ¢³É¹Ø¼ü×Ö²ÎÊý¡£
СÀý×Ó£º
my_template.py
from flask import
Flask,render_template
app = Flask(__name__)
app.debug = True
@app.route('/')
def hello_world():
context = {
'username': 'wanghui',
'age':19,
'children':{
'user':'ccc',
'type':'stu',
}
}
return render_template('index.html', **context)
# return render_template('index.html',context=context)
# return render_template('index.html',username='wanghui',age=19)
if __name__ == '__main__':
app.run() |
templates/index.html
<!DOCTYPE
html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>my blog</title>
</head>
<body>
<h1>ÕâÊÇÄ£°åäÖȾµÄÊý¾Ý</h1>
{#<p>{{ username }}</p>#}
{#<p>{{ age }}</p>#}
{{ context.username }}
{{ context.age }}
<p>{{ username }}</p>
<p>{{ children.user }}</p>
</body>
</html> |
Ä£°åÖеÄurl_for
Ä£°åÖеÄurl_forºÍÊÓͼº¯ÊýÖеÄurl_forÊÇÀàËÆµÄ£¬Ò²ÊÇ´«µÝÊÓͼº¯ÊýµÄÃû×Ö£¬Ò²¿ÉÒÔ´«µÝ²ÎÊý¡£Ê¹ÓõÄʱºò£¬ÐèÒªÔÚurl_forÁ½±ß¼ÓÉÏÒ»¸ö{{
url_for('func_name'),ref='/',id='1'}}
templates.py
from flask import
Flask,render_template,url_for
app = Flask(__name__)
app.debug = True
@app.route('/')
def hello_world():
return render_template('index.html')
@app.route('/accounts/login/<id>/')
def login(id):
return render_template('login.html')
if __name__ == '__main__':
app.run(port=8888) |
templates/index.html
<!DOCTYPE
html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>my blog</title>
</head>
<body>
<h1>ÕâÊÇ´ÓÄ£°åÖÐäÖȾµÄ</h1>
<p><a href="{{ url_for('login',ref='/',id='1')
}}">怫</a></p>
</body>
</html> |
templates/login.html
<!DOCTYPE
html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>Login page</title>
</head>
<body>
<h1>ÕâÊǵÇÂ¼Ò³Ãæ</h1>
{#{{ ÓÃÀ´´æ·Å±äÁ¿ }}#}
{#{% ÓÃÀ´Ö´Ðк¯Êý»òÕßÂß¼´úÂë %}#}
</body>
</html> |
¹ýÂËÆ÷
ÓÐʱºòÎÒÃÇÐèÒªÔÚÄ£°åÖжÔһЩ±äÁ¿½øÐд¦Àí£¬ÄÇô¾Í±ØÐëÒªÀàËÆÓÚpythonÖеĺ¯ÊýÒ»Ñù£¬¿ÉÒÔ½«Õâ¸öÖµ´«µ½º¯ÊýÖУ¬È»ºó×öһЩ²Ù×÷¡£ÔÚÄ£°åÖйýÂËÆ÷Ï൱ÓÚÊÇÒ»¸öº¯Êý£¬°Ñµ±Ç°µÄ±äÁ¿´«Èëµ½¹ýÂËÆ÷ÖУ¬È»ºó¹ýÂËÆ÷»á¸ù¾Ý×Ô¼ºµÄ¹¦ÄÜ£¬ÔÙ·µ»ØÏàÓ¦µÄÖµ£¬Ö®ºóÔÙ½«½á¹ûäÖȾµ½Ò³ÃæÉÏ¡£
»ù±¾Óï·¨£º{{ variable |¹ýÂËÆ÷µÄÃû×Ö }}
guo
abs(value)£º·µ»ØÒ»¸öÊýÖµµÄ¾ø¶ÔÖµ¡£ ÀýÈ磺-1|abs¡£
default(value,default_value,boolean=false)£ºÈç¹ûµ±Ç°±äÁ¿Ã»ÓÐÖµ£¬Ôò»áʹÓòÎÊýÖеÄÖµÀ´´úÌæ¡£name|default('xiaotuo')¡ª¡ªÈç¹ûname²»´æÔÚ£¬Ôò»áʹÓÃxiaotuoÀ´Ìæ´ú¡£boolean=FalseĬÈÏÊÇÔÚÖ»ÓÐÕâ¸ö±äÁ¿ÎªundefinedµÄʱºò²Å»áʹÓÃdefaultÖеÄÖµ£¬Èç¹ûÏëʹÓÃpythonµÄÐÎʽÅжÏÊÇ·ñΪfalse£¬Ôò¿ÉÒÔ´«µÝboolean=true¡£Ò²¿ÉÒÔʹÓÃorÀ´Ìæ»»¡£
escape(value)»òe£º×ªÒå×Ö·û£¬»á½«<¡¢>µÈ·ûºÅתÒå³ÉHTMLÖеķûºÅ¡£ÀýÈ磺content|escape»òcontent|e¡£
first(value)£º·µ»ØÒ»¸öÐòÁеĵÚÒ»¸öÔªËØ¡£names|first¡£
format(value,arags,*kwargs)£º¸ñʽ»¯×Ö·û´®¡£ÀýÈçÒÔÏ´úÂ룺
{{ "%s"
- "%s"|format('Hello?',"Foo!")
}}\
½«Êä³ö£ºHelloo? - Foo! |
last(value)£º·µ»ØÒ»¸öÐòÁеÄ×îºóÒ»¸öÔªËØ¡£Ê¾Àý£ºnames|last¡£
length(value)£º·µ»ØÒ»¸öÐòÁлòÕß×ÖµäµÄ³¤¶È¡£Ê¾Àý£ºnames|length¡£
join(value,d=u'')£º½«Ò»¸öÐòÁÐÓÃdÕâ¸ö²ÎÊýµÄֵƴ½Ó³É×Ö·û´®¡£
safe(value)£ºÈç¹û¿ªÆôÁËÈ«¾ÖתÒ壬ÄÇôsafe¹ýÂËÆ÷»á½«±äÁ¿¹ØµôתÒ塣ʾÀý£º
content_html|safe¡£
int(value)£º½«Öµ×ª»»ÎªintÀàÐÍ¡£
float(value)£º½«Öµ×ª»»ÎªfloatÀàÐÍ¡£
lower(value)£º½«×Ö·û´®×ª»»ÎªÐ¡Ð´¡£
upper(value)£º½«×Ö·û´®×ª»»ÎªÐ¡Ð´¡£
replace(value,old,new)£º Ìæ»»½«oldÌæ»»ÎªnewµÄ×Ö·û´®¡£
truncate(value,length=255,killwords=False)£º½ØÈ¡length³¤¶ÈµÄ×Ö·û´®¡£
striptags(value)£ºÉ¾³ý×Ö·û´®ÖÐËùÓеÄHTML±êÇ©£¬Èç¹û³öÏÖ¶à¸ö¿Õ¸ñ£¬½«Ìæ»»³ÉÒ»¸ö¿Õ¸ñ¡£
trim£º½ØÈ¡×Ö·û´®Ç°ÃæºÍºóÃæµÄ¿Õ°××Ö·û¡£
string(value)£º½«±äÁ¿×ª»»³É×Ö·û´®¡£
wordcount(s)£º¼ÆËãÒ»¸ö³¤×Ö·û´®Öе¥´ÊµÄ¸öÊý¡£
default¹ýÂËÆ÷Ïê½â£º
Èç¹ûij¸ö±äÁ¿Ê¹Ó÷½Ê½ÊÇ{{ value|default('ĬÈÏÖµ')}}£¬Èç¹ûvalueÕâ¸ökey²»´æÔڵϰ¾ÍʹÓùýÂËÆ÷ÌṩµÄĬÈÏÖµ£»Èç¹ûÀàËÆÓÚpythonÖÐÅжÏÒ»¸öÖµÊÇ·ñΪFalse£¨ÀýÈ磺¿Õ×ֵ䣬¿Õ×Ö·û´®£¬¿ÕÁбíµÄ»°£©ÄÇô¾Ã±ØÐëÒª´«µÝÁíÍâÒ»¸ö²ÎÊý{{
value | default('ĬÈÏÖµ'£¬boolean=True)}};
¿ÉÒÔʹÓÃorÀ´Ìæ»»default('ĬÈÏÖµ'£¬boolean=True)£¨ÀýÈç{{ siginature
or '´ËÈ˺ÜÀÁûÓÐÁôÏÂÈκÎ˵Ã÷'}}£©
Àý×Ó£º
defaulte_falter.py
from flask import
Flask,render_template
app = Flask(__name__)
@app.route('/')
def index():
context = {
'position':-9,
'signature':'',
#'signature':'this ismy blog'
}
return render_template('index.html',**context)
if __name__ == '__main__':
app.run(debug=True) |
templates/index.html
<!DOCTYPE
html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>MyBlog</title>
</head>
<body>
{#<p>¸öÐÔÇ©Ãû£º{{ signature|default('´ËÈ˺ÜÀÁûÓÐÁôÏÂÈκÎ˵Ã÷£¡',boolean=True)
}}</p>#}
<p>¸öÐÔÇ©Ãû£º{{ signature or '´ËÈ˺ÜÀÁûÓÐÁôÏÂÈκÎ˵Ã÷£¡'}}</p>
</body>
</html> |
esacape£º×ªÒå¹ýÂËÆ÷
safe¹ýÂËÆ÷£º¿ÉÒԹرÕÒ»¹«·Ö×Ö·û´®µÄ×Ô¶¯×ªÒå
escape¹ýÂËÆ÷£º¶Ôij¸ö×Ö·û´®½øÐÐתÒå
autoescape¹ýÂËÆ÷£º¿ÉÒÔ¶ÔÆä´úÂë¿òÄڵĴúÂë¿é¹Ø±Õ×Ô¶¯×ªÒå
first£º·µ»ØÐòÁÐÖеĵÚÒ»¸öÔªËØ
last£º·µ»ØÐòÁÐÖеÄ×îºóÒ»¸öÔªËØ
format£º¸ñʽ»¯Êä³ö
length£º³¤¶È¼ÆËã
int£º×ª»»³ÉÕûÊý
replase£º¾É×Ö·û´®»»³ÉеÄ
truncate£ºÖ¸¶¨³¤¶È½ØÈ¡£¨½áºÏstriptagsÈ¥³ýµôhtml×Ö¶ÎÖ®ºó½ØÈ¡´¿¾»×Ö·û´®È»ºó°´×ÖÊýÈ¥×öÔ¤ÀÀÒ³Ìî³ä£©
striptags£ºÈ¥³ý±êÇ©ÖеÄhtml×Ö¶Î
worldcount(s)£ºÍ³¼ÆÒ»¸ö³¤×Ö·û´®Öеĵ¥´ÊÊý
СÀý×Ó£º
escape.py
from flask import
Flask,render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
context = {
'position':-9,
'signature':'<script>alert("Hello world!")</script>',
'persons':['abc','def'],
'age':"18",
'article':'hello hello xxooo xxooo!!'
}
return render_template('index.html',**context)
if __name__ == '__main__':
app.run(debug=True,port=8080) |
templates/index.html
<!DOCTYPE
html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>MyBlog</title>
</head>
<body>
{#{% autoescape off %}#}
{#<p>¸öÐÔÇ©Ãû£º{{ signature }}</p>#}
{#{% endautoescape %}#}
<p>{{ signature|safe }}</p>
<p>{{ persons|first }}</p>
<p>{{ persons[0] }}</p>
<p>{{ persons|last }}</p>
<p>{{ persons[-1] }}</p>
<p>{{ "ÎÒµÄÃû×ÖÊÇ%s"|format("hello
word!") }}</p>
<p>{{ "ÈËÊýÊÇ %d"|format(persons|length)
}}</p>
{% if age|int == 18 %} <p>ÄêÁäÊÇ18Ëê</p>
{% else %} <p>ÄêÁä²»ÊÇ18Ëê</p>
{% endif %}
<p>{{ article|replace('hello','sssssz')
}}</p>
<p>{{ article|truncate(length=5) }}</p>
<p>{{ signature|striptags }}</p>
</body>
</html> |
×Ô¶¨ÒåÄ£°å¹ýÂËÆ÷
ÔÚpythonÎļþÖÐдºÃ×Ô¼ºµÄ¹ýÂËÆ÷£¨±¾ÖÊÉϾÍÊÇÒ»¸öº¯Êý£©
Èç¹ûÒªÔÚÄ£°åÖе÷ÓÃÕâ¸ö¹ýÂËÆ÷£¬ÄǾÍÐèÒªÔÚÕâ¸öº¯ÊýÉϼÓÒ»¸ö×°ÊÎÆ÷@app.template_filter('¹ýÂËÆ÷Ãû³Æ')
×Ô¶¯¼ÓÔØµÄ»°¾ÍÔÚappÏÂÌí¼Ó
app.config['TEMPLATES_AUTO_RELOAD']
= True |
СÀý×Ó£º
define_filter.py
from flask import
Flask,render_template
app = Flask(__name__)
app.config['TEMPLATES_AUTO_RELOAD'] = True
@app.route('/')
def hello_world():
context={
'article':'anyway hello anyway hello abccc'
}
return render_template('index.html',**context)
@app.template_filter('cut')
def cut(value):
vaule = value.replace("hello","sbsb")
return value
if __name__ == '__main__':
app.run(debug=True,port=9090)** |
templates/index.html
<!DOCTYPE
html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>myblog</title>
</head>
<body>
<p>{{ article|cut }}</p>
</body>
</html> |
ʵս×Ô¶¨Òå¹ýÂËÆ÷
ʱ¼ä´¦Àí£¨´ÓÏÖÔÚµ½·¢ÌûµÄʱ¼ä²î£©
shizhan.py
from flask import
Flask,render_template
from datetime import datetime
app = Flask(__name__)
app.config['TEMPLATES_AUTO_RELOAD'] = True
@app.route('/')
def index():
context={
'article':'aaa bbb ccc',
'create_time':datetime(2018,02,23,10,12,11)
}
return render_template('index.html',**context)
@app.template_filter('handle_time')
def handle_time(time):
'''
1.¾àÀëÏÖÔÚµÄʱ¼ä¶à¾Ã£¬Èç¹û¼ä¸ôÔÚÒ»·ÖÖÓÒÔÄھͱíʾ¸Õ¸Õ
2.ÔÚһСʱÒÔÄÚ¾ÍÏÔʾxx·ÖÖÓǰ
3.ÔÚ24СʱÒÔÄÚ¾ÍÏÔʾxxСʱǰ
4. ÔÚÒ»¸öÔÂÖ®ÄÚ¾ÍÏÔʾ¶àÉÙÌì֮ǰ
5. ·ñÔò¾ÍÏÔʾ¾ßÌåµÄʱ¼ä
:param time:
:return:
'''
if isinstance(time,datetime):
now = datetime.now()
timestamp = (now - time).total_seconds() #»ñÈ¡¼ä¸ôÃëÊý
if timestamp < 60:
return "¸Õ¸Õ"
elif timestamp >=60 and timestamp<= 60*60:
minutes = timestamp/60
return "%sᅅ",int(minutes)
elif timestamp >= 60*60 and timestamp <=
60*60*24:
hours = timestamp/(60*60)
return "%sСʱǰ",int(hours)
elif timestamp >= 60*60*24 and timestamp<=
60*60*24*30:
days = timestamp/(60*60*24)
return "%sÌìǰ",int(days)
else:
return time.strftime('%Y-%m-%d %H:%M')
if __name__ == '__main__':
app.run(port=9092,debug=True) |
templates/index.html
<!DOCTYPE
html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>MyBlog</title>
</head>
<body>
<p>·¢±íʱ¼ä:{{ create_time|handle_time }}</p>
</body>
</html> |
Ìõ¼þÅжÏ
ForÑ»·
ÔÚjinjia2ÖеÄforÑ»·£¬¸úpythonÖеÄforÑ»·»ù±¾ÊÇÒ»Öµģ¬Ò²ÊÇÓÃfor inÐÎʽ£»
¶øÇÒ¿ÉÒÔ±ãÀûËùÓеÄÐòÁÐÒÔ¼°µü´úÆ÷£¬µ«ÊÇΨһ²»Í¬µÄÊÇjinjia2ÖеÄforÑ»·Ã»ÓÐbreakºÍcontinue
СÀý×Ó£º
for_ex.py
from flask import
Flask,render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
context = {
'users':['user01','user02','user03'],
'person':{
'username':'wanghui',
'age':21,
'country':'china',
},
'books':[
{
'name':'sk1',
'author':'saa',
'price':100,
},
{
'name': 'aaaeede1',
'author': 'se232aa',
'price': 103,
},
{
'name': 'AAAew',
'author': 'VVVeqwea',
'price': 190,
},
{
'name': 'skfdfds1',
'author': 'sdfsfsdfdaa',
'price': 30,
}
]
}
return render_template('index.html',**context)
if __name__ == '__main__':
app.run(debug=True) |
templates/index.html
<!DOCTYPE
html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>MyBlog</title>
</head>
<body>
<ul>
{% for user in users %} <p>{{ user }}</p>
{% endfor %}
</ul>
<table> <thead> <tr>
<th>Óû§Ãû</th> <th>ÄêÁä</th>
<th>¹ú¼Ò</th> </tr> </thead>
<tbody> <tr>
{% for key,value in person.items() %} <td>{{
value }}</td>
{% endfor %} </tr> </tbody>
<table> <thead> <tr>
<th>ID</th> <th>ÊéÃû</th>
<th>×÷Õß</th> <th>¼Û¸ñ</th>
<th>×ÜÊý</th> </tr> </thead>
<tbody>
{% for book in books %}
{% if loop.first %} <tr style="background:
red">
{% elif loop.last %} <tr style="background:
blue">
{% else %} <tr>
{% endif %} <td>{{ loop.index }}</td>
<td>{{ book.name }}</td> <td>{{
book.author }}</td> <td>{{ book.price
}}</td> <td>{{ loop.length }}</td>
</tr>
{% endfor %} </tbody>
</table>
</table>
<table border="1px"> <tbody>
{% for x in range(1,10) %} <tr>
{% for y in range(1,x+1) if y <= x %} <td>{{
y }}*{{ x }}={{ x*y }}</td>
{% endfor %} </tr>
{% endfor %} </tbody>
</table>
</body>
</html> |
ºê
Ä£°åÖеĺê¸úpythonÖеĺ¯ÊýÀàËÆ£¬¿ÉÒÔ´«µÝ²ÎÊý£¬µ«ÊDz»ÄÜÓзµ»ØÖµ
ʹÓúêµÄʱºò£¬²ÎÊý¿ÉÒÔÊÇĬÈÏÖµ
СÀý×Ó£º
macro.py
from flask import
Flask,render_template
app = Flask(__name__)
app.config['TEMPLATES_AUTO_RELOAD'] = True
app.config['DEBUG'] = True
@app.route('/')
def hello_world():
return render_template('index.html')
if __name__ == '__main__':
app.run(port=9999) |
templates/index.html
<!DOCTYPE
html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>Macro</title>
</head>
<body>
{% macro input(name="",value="",type="text")
%} <input type="{{ type }}" name="{{
name }}" value="{{ value }}">
{% endmacro %}
<h1>µÇÂ½Ò³Ãæ</h1>
<table> <tbody> <tr>
<td>Óû§Ãû£º</td> <td>{{ input('username')
}}</td> </tr> <tr>
<td>ÃÜÂ룺</td> <td>{{ input('password',type='password')
}}</td> </tr> <tr>
<td></td> <td>{{ input(value='Ìá½»',type='submit')
}}</td> </tr> </tbody>
</table>
</body>
</html> |
ºêµÄµ¼Èë
ÔÚÕæÊµµÄ¿ª·¢ÖУ¬»á½«Ò»Ð©³£Óõĺ굥¶À·ÅÔÚÒ»¸öÎļþÖУ¬ÔÚÐèҪʹÓõÄʱºò£¬ÔÙ´ÓÕâ¸öÎļþÖнøÐе¼Èë¡£
importÓï¾äµÄÓ÷¨¸úpythonÖеÄimportÀàËÆ£¬¿ÉÒÔÖ±½Óimport...as...£¬Ò²¿ÉÒÔfrom...import...»òÕßfrom...import...as...£¬¼ÙÉèÏÖÔÚÓÐÒ»¸öÎļþ£¬½Ð×öforms.html£¬ÀïÃæÓÐÁ½¸öºê·Ö±ðΪinputºÍtextarea£¬ÈçÏ£º
×¢ÒâÊÂÏ
a. inportºêÎļþ as xxx
b. from ºêÎļþ·¾¶ import ºêµÄÃû×Ö [as xxx]
c. ºêÎļþµÄ·¾¶£¬²»ÒªÒÔÏà¶Ô·¾¶È¥ÕÒ£¬¶¼ÒªÒÔtemplates×÷Ϊ¾ø¶Ô·¾¶È¥ÕÒ
d. Èç¹ûÏëÒªÔÚµ¼ÈëºêµÄʱºò£¬¾Í°Ñµ±Ç°Ä©°àµÄһЩ²ÎÊý´«µÝ¸øºêËùÔÚµÄÄ£°å£¬ÄÇô¾ÍÓ¦¸ÃÔÚµ¼ÈëµÄʱºòʹÓÃ
with context
СÀý×Ó£º
macros.py
from flask import
Flask,render_template
app = Flask(__name__)
app.config['TEMPLATES_AUTO_RELOAD'] = True
app.config['DEBUG'] = True
@app.route('/')
def hello_world():
return render_template('index/index.html')
if __name__ == '__main__':
app.run(port=9999) |
templates/macros/macros.html
{% macro input(name="",value="",type="text")
%} <input type="{{ type }}" name="{{
name }}" value="{{ username }}">
{% endmacro %} |
templates/index/index.html
{#{% from "macros.html"
import input as inp %}#}
{% import "macros/macros.html" as macros
with context %}
<!DOCTYPE html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>Macro</title>
</head>
<body>
<h1>µÇÂ½Ò³Ãæ</h1>
<table> <tbody> <tr>
<td>Óû§Ãû£º</td> <td>{{ macros.input('username')
}}</td> </tr> <tr>
<td>ÃÜÂ룺</td> <td>{{ macros.input('password',type='password')
}}</td> </tr> <tr>
<td></td> <td>{{ macros.input(value='Ìá½»',type='submit')
}}</td> </tr> </tbody>
</table>
</body>
</html> |
include±êÇ©
Õâ¸ö±êÇ©Ï൱ÓÚÊǽ«Ö¸¶¨Ä£°åÖеĴúÂë¸´ÖÆÕ³Ìùµ½µ±Ç°µÄλÖÃ
include±êÇ©£¬Èç¹ûÒª¼ÌÐøÊ¹Óø¸Ä£°åÖеıäÁ¿£¬Ö±½ÓÓþͿÉÒÔÁË
includeµÄ·¾¶Ò²ºÍimportÒ»Ñù£¬ÐèÒª´ÓtemplatesΪ¸ù£¬²»ÒªÒÔÏà¶Ô·¾¶È¥ÕÒ¡£
СÀý×Ó£º
include_ex.py
from flask import
Flask,render_template
app = Flask(__name__)
app.config['TEMPLATES_AUTO_RELOAD']
@app.route('/')
def hello_world():
return render_template('index.html',username='wanghui')
@app.route('/detail/')
def detail():
return render_template('course_detail.html')
if __name__ == '__main__':
app.run(debug=True) |
templates/index.html
<!DOCTYPE
html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>MyBlog</title>
</head>
<body>
{% include "common/header.html" %}
<div class="content">ÖмäµÄ</div>
{% include "common/footer.html" %}
<ul>{{ username }}</ul>
</body>
</html> |
templates/course_detail.html
<!DOCTYPE
html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% include "common/header.html" %}
<div class="content">ÎÄÕÂÏêÇ飡</div>
{% include "common/footer.html" %}
</body>
</html> |
templates/common/header.html
<style>
.nav ul{
overflow: hidden;
}
.nav ul li{
float: left;
margin: 0 20px;
} </style>
<nav class="nav"> <ul>
<li>Ê×Ò³</li> <li>²©¿ÍÏêÇé</li>
<li>½Ì³ÌÖÐÐÄ</li> <li>¹ØÓÚÎÒ</li>
</ul>
</nav> |
templates/common/footer.html
<footer>ÕâÊǵײ¿</footer> |
set withÓï¾ä
ÔÚÄ£°åÖУ¬¿ÉÒÔʹÓÃsetÀ´¶¨Òå±äÁ¿£»Ò»µ©¶¨ÒåÁËÕâ¸ö±äÁ¿¡£ÄÇôÔÚºóÃæµÄ´úÂëÖУ¬¶¼¿ÉÒÔʹÓÃÕâ¸ö±äÁ¿¡£
withÓï¾ä¶¨ÒåµÄ±äÁ¿£¬Ö»ÄÜÔÚwithµÄ´úÂë¿éÖÐʹÓᣳ¬³öwith´úÂë¿é£¬Ôò²»ÄÜʹÓÃ
with²»Ò»¶¨Òª¸úÒ»¸ö±äÁ¿£¬Ò²¿ÉÒÔÊÇÒ»¸ö¿ÕµÄwithÓï¾ä£¬ÒÔºóÒªÓõϰ£¬¾ÍÔÚwithÖÐʹÓÃset¶¨ÒåµÄ±äÁ¿À´Ê¹Óá£
<body>
{% set username='wanghui' %}
<p>Óû§Ãû£º{{ username }}</p>
{% with %}
{% set classroom='2018' %} <p>°à¼¶£º{{
classroom }}</p>
{% endwith %}
<p>±ðµÄ°à¼¶{{ classroom }}</p>
</body> |
¼ÓÔØ¾²Ì¬Îļþ
¼ÓÔØ¾²Ì¬ÎļþʹÓõÄÊÇurl_forº¯Êý£¬µÚÒ»¸ö²ÎÊýΪstatic,µÚ¶þ¸ö²ÎÊýÊÇfilename='path'
·¾¶²éÕÒÒªÒÔstaticĿ¼×÷Ϊ¸ùĿ¼
СÀý×Ó£º
static_ex.py
from flask import
Flask,render_template
app = Flask(__name__)
app.config.update({
'DEBUG':True,
'TEMPLATES_AUTO_RELOAD':True,
})
@app.route('/')
def hello_world():
return render_template('index.html')
if __name__ == '__main__':
app.run() |
static/css/index.css
body{
background: pink;
} |
static/js/index.js
templates/index.html
<!DOCTYPE
html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>Title</title> <link
rel="stylesheet" href="{{ url_for('static',filename="css/index.css")
}}"> <script src="{{ url_for('static',filename="js/index.js")
}}"></script>
</head>
<body>
<img src="{{ url_for('static',filename='imgs/asa.jpg')
}}" alt="">
</body>
</html> |
Ä£°å¼Ì³Ð
ΪʲôÐèҪģ°å¼Ì³Ð£¿
¿ÉÒÔ½«Ò»Ð©¹«ÓõĴúÂëµ¥¶À³éÈ¡³öÀ´·Åµ½Ò»¸ö¸¸Ä£°åÖУ¬ÒÔºó×ÓÄ£°åÖ±½Ó¼Ì³Ð¾Í¸ø¿ÉÒÔʹÓÃÁË¡£
ÕâÑù¿ÉÒÔ¼õÉÙÖØ¸´ÐԵĴúÂ룬²¢ÇÒÒÔºó´úÂëÐÞ¸ÄÆðÀ´Ò²ºÜ·½±ã
Ä£°å¼Ì³ÐµÄÓï·¨
ʹÓÃextendsÓï¾äÀ´Ö¸Ã÷¼Ì³ÐµÄ¸¸Ä£°å¡£¸¸Ä£°åµÄ·¾¶Ò²¾ÍÊÇÏà¶ÔÓÚtemplatesÎļþ¼Ðϵľø¶Ô·¾¶¡£Àý×ÓÈçÏÂ{%
extends 'base.html' %}
blockÓï·¨
Ò»°ãÔÚ¸¸Ä£°åÖÐÖ»Äܶ¨ÒåһЩ¹²ÐÔ¹«ÓõĴúÂ룬×ÓÄ£°å¿ÉÄÜÒª¸ù¾Ý²»Í¬µÄÐèÇóʵÏÖ²»Í¬µÄ´úÂë¡£Õâʱºò¸¸Ä£°å¾ÍÓ¦¸ÃÌṩһ¸ö½Ó¿Ú£¬ÈÃ×ÓÄ£°åÀ´ÊµÏÖ¡£´Ó¶øÊµÏÖÒµÎñµÄ¾ßÌ幦ÄÜ¡£
ÔÚ¸¸Ä£°åÖÐ
{% block body_block
%} <p>ÎÒÊÇbaseϵÄ</p>
{% endblock %} |
ÔÚ×ÓÄ£°åÖÐ
{% block body_block
%} <p>ÎÒÊÇindexµÄÄÚÈÝ</p>
{% endblock %} |
µ÷Óø¸Ä£°å´úÂëblockÖеĴúÂë
ĬÈÏÇé¿öÏ£¬×ÖÄ»°æÊµÏÖÁ˸¸Ä£°å¶¨ÒåµÄblock£¬ÄÇô×ÓÄ£°åÖÐblockµÄ´úÂë¾Í»á¸²¸Çµô¸¸Ä£°åÖеĴúÂ룬ҪÏë±£Áô¸¸Ä£°åÖеÄblockµÄ»°¾ÍÊÇÓÃ{{
super() }}À´ÊµÏÖ
¸¸Ä£°åµÄÄÚÈÝ£º
{% block body_block
%} <p style="background: red">base.html</p>
{% endblock %} |
×ÓÄ£°åÖеÄÄÚÈÝ£º
{% extends 'base.html'
%}
{% block body_block %}
{{ super() }} <p style="background:
green">ÎÒÊÇindexµÄÄÚÈÝ</p>
{% endblock %} |
µ÷ÓÃÁíÍâÒ»¸öblockÖеĴúÂë
ÔÚÁíÍâÒ»¸öÄ£°åÖÐʹÓÃÆäËûÄ£°åÖеĴúÂ룬¿ÉÒÔʹÓÃ{{ self.blockname() }}¼´¿É
¸¸Ä£°å
<title>{%
block title %}
{% endblock %}</title>
<body>
{% block body_block %} <p style="background:
red">base.html</p>
{% endblock %}
</body> |
×ÓÄ£°å£º
{% extends 'base.html'
%}
{% block title %}
MyIndex
{% endblock %}
{% block body_block %}
{{ super() }}
{{ self.title() }} <p style="background:
green">ÎÒÊÇindexµÄÄÚÈÝ</p>
{% endblock %} |
ÆäËû×¢ÒâÊÂÏî
¼Ì³ÐµÄ´úÂë±ØÐë·ÅÔÚ×ÓÄ£°åÖеĵÚÒ»ÐÐ{% extends 'base.html' %}
×ÓÄ£°åÖÐҪʵÏÖ×Ô¼ºµÄ´úÂ룬Ҫ·Åµ½blockÖУ¬²»È»²»ÉúЧ
¼Ì³ÐµÄÀý×Ó£º
inherit_ex.py
from flask import
Flask,render_template
app = Flask(__name__)
app.config.update({
'DEBUG':True,
'TEMPLATES_AUTO_RELOAD':True
})
@app.route('/')
def index():
return render_template('index.html')
@app.route('/detail/')
def detail():
return render_template('course_detail.html')
if __name__ == '__main__':
app.run() |
templates/base.html
<!DOCTYPE
html>
<html lang="en">
<head> <meta charset="UTF-8">
<title>{% block title %}
{% endblock %}</title> <style>
.nav ul{
overflow: hidden;
}
.nav ul li{
float: left;
margin: 0 20px;
} </style>
</head>
<body>
<nav class="nav"> <ul>
<li>Ê×Ò³</li> <li>²©¿ÍÏêÇé</li>
<li>½Ì³ÌÖÐÐÄ</li> <li>¹ØÓÚÎÒ</li>
</ul>
</nav>
{% block body_block %} <p style="background:
red">base.html</p>
{% endblock %}
<footer>ÕâÊǵײ¿</footer>
</body>
</html> |
templates/index.html
{% extends 'base.html'
%}
{% block title %}
MyIndex
{% endblock %}
{% block body_block %}
{{ super() }}
{{ self.title() }} <p style="background:
green">ÎÒÊÇindexµÄÄÚÈÝ</p>
{% endblock %} |
templates/course_detail.html
{% extends 'base.html'
%}
{% block body_block %}
<p>this is course </p>
{% endblock %} |
|