django模板語法+密碼加入環境變數
將賬號密碼加入環境變數
編輯環境變數檔案
1、vim ~/.bashrc
2、在檔案末尾加入
export 你的環境變數名字=對應的值
3、在你執行啟動服務命令的視窗執行
source ~/.bashrc (啟用新的環境)
python 程式裡 怎麼拿環境變數
~
from os import environ
environ.get("你設定的環境變數")
~
model繼承
什麼時候用
當model出現很多重複的欄位 我們可以考慮給他們寫一個合理的抽象類
怎麼用:
~~~
class Humen(models.Model):
name = models.CharField(
max_length=20,
verbose_name=’人名’
)
age = models.IntegerField(
verbose_name=’年紀’,
default=1
)
sex = models.CharField(
max_length=6,
verbose_name=’性別’
)
class Meta:
abstract = True
class Stu(Humen):
score = models.IntegerField(
verbose_name=’成績’
)
class Teacher(Humen):
salary = models.IntegerField(
verbose_name=’工資’
)
~~~
模板的處理過程(不是很重要)
1 載入
2 渲染
原生寫法
~
def get_teachers_v1(req):
# 載入模板
template = loader.get_template('teachers.html')
# print(template)
# print(dir(template))
# 拿資料
result = Teacher.objects.all()
# 渲染模板 同時也加入了資料
template_str = template.render({'teachers': result})
print(template_str)
# 將渲染得到的HTML字串返回給請求
return HttpResponse(template_str)
~
模板語法
1 點語法
通過變數訪問屬性或者方法
~~~
-
{%for i in teachers%} #{{i.name}}是在訪問屬性
- {{i.name}}老師的工資是{{i.salary}}美金 #{{i.get_base_msg}}訪問方法 不能傳引數
{{i.get_base_msg}}
#{%empty%} 在資料為空的時候 顯示出來 不為空 就不顯示 {%empty%}請說東北話
{%endfor%}~~~
2 下標訪問陣列內的元素
~
{{teachers.0.get_base_msg}}
~
3 if 條件判斷
~~~
格式: {% if 表示式 %}
語句
{% endif %}
{% if 表示式 %}
語句
{% else %}
語句
{% endif %}
{% if 表示式 %}
語句
{% elif 表示式 %}
語句
{% endif %}
~~~
使用例項(注意等號兩邊的空格)
~
{%if i.id == 2%}
~
4 乘除
~~~
語法格式:{% widthratio 數 分母 分子 %}
{%for i in teachers%}
{%widthratio i.age 4 3%}
{%endfor%}
~~~
5 整除
語法格式:{% if 你的數字|divisibleby:要整除幾 %}
使用例項
~
{%for i in teachers%}
{%if i.id|divisibleby:2%}
{%endfor%}
~
6 註釋:
單行 不可見 {#你想註釋的內容#}
多行不可見
~
{%comment%}
你的一大堆註釋
{%endcomment%}
~
7 獲取迴圈次數
{{ forloop.counter }} 表示當前是第幾次迴圈,從1數數
{{forloop.counter0}}表示當前是第幾次迴圈,從0數數
{{ forloop.revcounter}}表示當前是第幾次迴圈,倒著數數,到1停
{{forloop.revcounter0}}表示當前第幾次迴圈,倒著數,到0停
{{ forloop.first }} 是否是第一個 布林值
{{ forloop.last }} 是否是最後一個布林值
8判斷是否等於
{%ifequal teachers.1.id 2%}
等於
{%else%}
不等於
{%endifequal%}
9 操作
~~~
add {{ 變數 | add : 5 }}
沒有減法過濾器,但是加法裡可以加負數
{{ 變數 | add : -5}}
lower 將字母轉小寫
{{ 變數|lower }}
upper 將字母轉大寫
~~~
反向解析(重要)
根據名稱空間和URL名字找到對應的處理邏輯 (蔡中能同學脫單的經歷)
怎麼做
1 在工程的urls.py
在include方法 加入namespace 來定義你的名稱空間
~
url(r'^t4/', include("t4.urls", namespace="python1803"))
~
2 在專案的url.py裡 加入name引數 給url指定一個名字
~
url(r"^lolstu$", get_stu, name="czn"),
~
3 前端
{%url ‘名稱空間的名字:url的名字’%}
4 後端
~
def index(req):
return HttpResponseRedirect(reverse('python1803:czn'))
解釋:HttpResponseRedirect 是重定向
reverse('名稱空間的名字:url的名字')
~
需求:解析url路徑裡面的引數 去資料庫對應老師
1 先去允許url 寫成可變的
~
url(r"teacher/(?P\d+)/(?P\d+)", get_teacher, name='zhangsan'),
~
2 views.py裡 對應的處理請求函式 要加入對應引數的佔位
~
def get_teacher(req, t_id, a_id):
正常寫
~
前端寫法:
~
{%url 'python1803:zhangsan' t_id=2 a_id=3%}
~
後端寫法
~
return HttpResponseRedirect(reverse('python1803:zhangsan', kwargs={'a_id':3, 't_id': 1}))
~
頁面繼承(複用)
1 在基礎頁面 確定佔位
佔了位置(挖了哪些坑)
~
1 js引用
2 CSS 引用
3 網頁結構
4 額外的js css頁面內程式碼
~
2 語法
~
{%block 名字%}
{%endblock%}
~
3 繼承
~
{%extends '檔名字'%}
接下來要填坑
{%block 名字%}
寫HTML
{%endblock%}
~