django如何傳遞參數給template對象的?html
沒錯,就是經過views.py的函數傳遞,例如 render(request,'xxx.html',{'xx':'oo'}),還有其餘的方式嗎?其實還有url的方式傳遞參數,這裏再也不贅述django
今天,咱們講解一下template對象,如何與py進行交互,這裏的py是指單獨的py文件,而不是基於django的py文件app
首先,咱們在app01文件夾下建立一個templatetags目錄,而後在建立xxoo.pyide
from django import template from django.utils.safestring import mark_safe register = template.Library() @register.simple_tag def simple_01(): return 'Python'
而後模板文件index.html函數
{% load xxoo %} <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div> {% simple_01 %} </div>
</body>
</html>
注意:自定義simple_tag的4個注意事項url
一、在模版文件中 {% load py文件 %}
spa
二、settings.py文件中,註冊app,本文自建立app01,因此在INSTALLED_APPS = ['app01']
3d
三、在app01目錄下建立目錄templatetags,注意必須在app01目錄下
code
四、建立template對象時,變量名固定,必須register,必須爲register,必須爲register
htm
五、必須重啓服務
接下來神奇的事情發生了
在以前基礎上,咱們加上參數
from django import template from django.utils.safestring import mark_safe register = template.Library() @register.simple_tag def simple_02(a,b): return a + b
{% load xxoo %} <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div> {% simple_02 1 2 %} </div>
</body>
</html>
from django import template from django.utils.safestring import mark_safe register = template.Library() @register.filter def simple_03(a,b): return a +'-'+ b
{% load xxoo %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div> {{ '張傑'|simple_03:'謝娜' }} </div> </body> </html>
優勢:能夠傳多個參數
缺點:不能做爲if語句的條件
優勢:能夠做爲if語句的條件
缺點:參數最多隻能傳2個,並且不能有空格,其餘的只能經過字符串拼接,而後在分割