Django基礎四之模板系統
阿新 • • 發佈:2020-07-28
自定義過濾器 1. app應用資料夾中建立一個templatetags檔案件,必須是這個名字 2. templatetags資料夾中建立一個 xx.py檔案,檔名字隨便起 3. 建立自定義過濾器 from django import template register = template.Library() #register固定的名字,註冊器 # @register.filter # def oo(v1,v2): #不帶引數的過濾器 # s = v1 + 'xxoo' # return s @register.filter def oo(v1,v2): #帶引數的過濾器 s = v1 + v2 return s 4. 使用 html檔案中 {% load 檔名 %} {% load xx %} {{ values|oo }} -- 無引數 {{ values|oo:'asdf' }} -- 有引數 5. 注意:引數最多兩個 自定義標籤 1. app應用資料夾中建立一個templatetags檔案件,必須是這個名字 2. templatetags資料夾中建立一個 xx.py檔案,檔名字隨便起 3. 建立自定義標籤 @register.simple_tag def mytag(v1,v2,v3): s = v1 + '和B哥' + v2 + v3 return s 4.使用 {% load xx %} {% mytag s1 '和相璽' '和大壯' %} 5. #可以傳多個引數
1. app應用資料夾中建立一個templatetags檔案件,必須是這個名字 2. templatetags資料夾中建立一個 xx.py檔案,檔名字隨便起 3. 建立自定義inclusion_tag @register.inclusion_tag('inclusiontag.html') def func(v1): return {'oo':v1} 4. func的return資料,傳給了inclusiontag.html,作為模板渲染的資料,將inclusiontag.html渲染好之後,作為一個元件,生成到呼叫這個func的地方 5. 使用 {% load xx %} {% func l1 %}
1 在專案中建立一個資料夾,比如叫jingtaiwenjian # STATIC_URL = '/xxx/' #別名,隨便寫名字,但是如果你改名字,別忘了前面頁面裡面如果你是通過/xxx/bootstrap.css的時候,如果這裡的別名你改成了/static/的話,你前端頁面的路徑要改成/static/bootstrap.css。所以我們都是用下面的load static的方式來使用靜態檔案路徑 2 STATIC_URL = '/static/' #別名 3 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'jingtaiwenjian'), #注意別忘了寫逗號,第二個引數就是專案中你存放靜態檔案的資料夾名稱 ]
目錄:別名也是一種安全機制,瀏覽器上通過除錯臺你能夠看到的是別名的名字,這樣別人就不能知道你靜態資料夾的名字了,不然別人就能通過這個資料夾路徑進行攻擊。
前端頁面引入靜態檔案的寫法,因為別名也可能會修改,所以使用路徑的時候通過load static來找到別名,通過別名對映路徑的方式來獲取靜態檔案
{% load static %}<img src="{% static "images/hi.jpg" %}" alt="Hi!" />
引用JS檔案時使用:
{% load static %}
<script src="{% static "mytest.js" %}"></script>
某個檔案多處被用到可以存為一個變數
{% load static %}
{% static "images/hi.jpg" as myphoto %}
<img src="{{ myphoto }}"></img>
{% load static %}
<img src="{% get_static_prefix %}images/hi.jpg" alt="Hi!" />
或者
{% load static %}
{% get_static_prefix as STATIC_PREFIX %}
<img src="{{ STATIC_PREFIX }}images/hi.jpg" alt="Hi!" />
<img src="{{ STATIC_PREFIX }}images/hi2.jpg" alt="Hello!" />
orm -- Object Relational Mapping
將類物件 --- sql
類 -- 表
物件 -- 行
屬性 -- 欄位
app01 應用下 的models.py檔案中寫
class UserInfo(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=16,null=True,blank=True,db_index=True)
age = models.IntegerField(default=1,unique=True,choices=((1,'男'),(2,'女'),(3,'二椅子')))
current_date = models.DateField(auto_now=True,auto_now_add=True)
不連線mysql的話,預設連線的是sqlite資料庫
配置連線mysql
1 settings.py 檔案中找DATABASES這個配置,改為
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# }
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST':'127.0.0.1',
'PORT':3306,
'NAME':'orm01',
'USER':'root',
'PASSWORD':'123',
}
}
2 專案資料夾下的init檔案中,寫上下面兩句
import pymysql
pymysql.install_as_MySQLdb()
3 執行資料庫同步指令
python manage.py makemigrations
python manage.py migrate