1. 程式人生 > >django模板語法+密碼加入環境變數

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%}

  • {{i.name}}老師的工資是{{i.salary}}美金
  • {%else%}
  • {{i.name}}老師的工資是{{i.salary}}美金
  • {%endif%}
    ~

    4 乘除

    ~~~
    語法格式:{% widthratio 數 分母 分子 %}

    {%for i in teachers%}
        {%widthratio i.age 4 3%}
    {%endfor%}
    

    ~~~

    5 整除

    ​ 語法格式:{% if 你的數字|divisibleby:要整除幾 %}

    ​ 使用例項

    ~
    {%for i in teachers%}
    {%if i.id|divisibleby:2%}

  • {{i.get_base_msg}}
  • {%else%}
  • {{i.get_base_msg}}
  • {%endif%}
    {%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%}
    ~