Python全棧Web(Django框架、模板)
1.Django中的模板(Templates)
1.什麼是模板
模板就是要動態呈現給使用者的網頁
模板的本質就是網頁- 前後端,動靜結合的網頁
Django的模板引擎是由Django自己提供的,並不是Jinja2,
所以Django的模板語法與Flask(Jinja2)的語法會有一些不同
2.模板的設定
在 settings.py 中 有一個 TEMPLATES 變數
1.BACKEND:指定使用的模板的引擎
2.DIRS :指定模板的存放目錄們
1.如果寫東西:則按照寫好的路徑去找模板
2.如果未寫東西:那麼Django會自動的到每個應用中所有一個叫templates的目錄來作為模板的存放目錄
3.APP_DIRS : 是否自動搜尋應用中的目錄
True:表示搜尋應用中的 templates 的目錄
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
# 靜態檔案的訪問路徑
STATIC_URL = `/static/`
# 靜態檔案的儲存路徑
STATICFILES_DIRS = (os.path.join(BASE_DIR, `static`),)
1.通過 loader 物件獲取模板,再通過HttpResponse進行響應
from django.template import loader
def xxViews(request):
#1.通過 loader 載入模板
t = loader.get_template(“模板名稱”)
#2.將模板渲染成字串
html = t.render()
#3.將字串通過HttpResponse響應給客戶端
return HttpResponse(html)
2.使用 render 直接載入並響應模板
def xxViews(request):
return render(request,`模板的名稱`)
# Create your views here.
def temp_views(request):
#1.通過loader載入模板
t=loader.get_template(`01-temp.html`)
#2.將模板渲染成字串
html=t.render()
#3.再通過HttpResponse將字串響應給瀏覽器
return HttpResponse(html)
# 使用render載入模板
def temp02_views(request):
return render(request, `01-temp.html`)
4.模板的語法
1.變數
1.作用:將後端的資料傳遞給模板進行顯示
2.在Django中允許作為變數傳遞給模板的資料型別
字串,整數,列表,元組,字典,函式,物件
3.變數的語法
變數們必須要封裝到字典中才能傳遞給模板
1.使用 loader 載入模板
dic = {
`變數名1`:`值1`,
`變數名2`:`值2`,
}
t = loader.get_template(`xxx.html`)
html = t.render(locals() 或 dic)
return HttpResponse(html)
2.使用 render 載入並返回模板
dic = {
`變數名1`:`值1`,
`變數名2`:`值2`,
}
return render(request,`xx.html`,dic)
4.在模板中使用變數
{{變數名}}
# http://localhost:8000/03-var
def var_views(request):
str = "模板中的變數-字串"
num = 3306
tup = (`謝遜`,`韋一笑`,`殷素素`,`金花婆婆`)
list = [`孫悟空`,`豬八戒`,`沙和尚`]
dic = {
`BJ`:`北京`,
`SZ`:`深圳`,
`SH`:`上海`,
}
say = sayHi()
dog = Dog()
return render(request,`03-var.html`,locals())
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!-- 取出每個變數進行顯示 -->
<h3>str:{{ str }}</h3>
<h3>num:{{ num }}</h3>
<h3>tup:{{ tup }}</h3>
<h3>tup[0]:{{ tup.0 }}</h3>
<h3>list:{{ list }}</h3>
<h3>list[1]:{{ list.1 }}</h3>
<h3>dic:{{ dic }}</h3>
<h3>dic[`SZ`]:{{ dic.SZ }}</h3>
<h3>say:{{ say }}</h3>
<h3>dog.name:{{ dog.name }}</h3>
<h3>dog.eat:{{ dog.eat }}</h3>
<!-- 寵物名稱:{{ dog.name }} -->
{% comment "寵物名稱" %}
寵物名稱:{{ dog.name }}
{% endcomment %}
</body>
</html>
django中不同於jinja2的模板 django的模板中不能使用索引和切片
只能通過·的方式來獲取元素 但不影響迴圈
2.標籤
1.作用
將伺服器端的功能嵌入到模板中
2.語法
{% 標籤內容 %}
3.常用標籤
1. comment 標籤
2. for 標籤
作用:迴圈遍歷 列表,字典,元組
語法:
{% for 變數 in 列表|元組|字典 %}
{% endfor %}
迴圈中允許使用 forloop 內建變數來獲取迴圈的資訊
forloop.counter : 當前迴圈遍歷的次數
forloop.first : 判斷是否為第一次迴圈
forloop.last : 判斷是否為最後一次迴圈
3.if 標籤
作用:在模板中完成變數的判斷操作
語法:
1. if
{% if 條件 %}
滿足條件時要執行的內容
{% endif %}
2. if … else
{% if 條件 %}
滿足條件時要執行的內容
{% else %}
不滿足條件時要執行的內容
{% endif %}
3.if … elif … else
{% if 條件1 %}
滿足條件1時要執行的內容
{% elif 條件2 %}
或滿足條件2時要執行的內容
{% elif 條件3 %}
或滿足條件3時要執行的內容
{% else %}
或以上條件都不滿足時要執行的內容
{% endif %}
<!-- 通過for迴圈便利tup -->
<h1>使用for迴圈便利tup</h1>
{% for t in tup %}
<p
{% if forloop.first %}
style="background:red;"
{% elif forloop.last %}
style="background:blue;"
{% else %}
style="background:pink;"
{% endif %}
>
<span>內容:{{ t }}</span>
<br>
<span>下標:{{ forloop.counter0 }}</span>
<br>
<span>次數:{{ forloop.counter }}</span>
<br>
<span>第一次迴圈:{{ forloop.first }}</span>
<br>
<span>最後一次迴圈:{{ forloop.last }}</span>
</p>
{% endfor %}
<h1>通過for實現的select</h1>
<select>
{% for t in tup %}
<option value="{{ forloop.counter0 }}"
{% if forloop.last %}
selected
{% endif %}
>{{ t }}</option>
{% endfor %}
</select>
3.過濾器
1.什麼是過濾器
在變數輸出顯示之前,對變數進行篩選和過濾
2.過濾器的語法
{{變數|過濾器:引數}}
3.常用過濾器
1.{{value|upper}}
將value變為大寫
2.{{value|lower}}
將value變為小寫
3.{{value|add:num}}
將num值累加到value之後
4.{{value|floatformat:n}}
將value四捨五入到n位小數
5.{{value|truncatechars:n}}
將value擷取保留至n位字元(包含…)
4.靜態檔案
1.什麼是靜態檔案
在Django中,不被直譯器所動態解析的檔案就是靜態檔案
2.Django中靜態檔案的處理
在settings.py中設定有關靜態檔案的資訊:
1.設定靜態檔案的訪問路徑
在瀏覽器中通過哪個地址能夠找到靜態檔案
STATIC_URL = `/static/`
如果訪問路徑是 http://localhost:8000/static/…,那麼就到靜態檔案儲存路徑中找檔案而不走路由(urls.py)
2.設定靜態檔案的儲存路徑
指定靜態檔案儲存在伺服器上的哪個位置處
STATICFILES_DIRS=(os.path.join(BASE_DIR,`static`),)
靜態檔案目錄的存放位置:
1.在專案的根目錄處建立一個 static 目錄,用於儲存靜態檔案們
2.每個應用中也可以建立一個 static 目錄,用於儲存靜態檔案們
3.訪問靜態檔案
1.直接使用靜態檔案訪問路徑進行訪問
http://localhost:8000/static/..
ex:
<img src=”/static/images/a.jpg”>
<img src=”http://localhost:8000/static/images/a.jpg”>
2.使用 {% static %} 訪問靜態資源
{% static %} 表示的就是靜態資源的訪問路徑
1.在模板的最頂層增加
{% load static %}
2.在使用靜態資源時
<img src=”{% static `images/a.jpg`%}”>
# http://localhost:8000/04-static
def static_views(request):
return render(request, `04-static.html`)
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!-- 顯示靜態資原始檔 -->
<p>
<img src="/static/images/shuaige.jpg">
</p>
<p>
<img src="http://localhost:8000/static/images/shuaige.jpg">
</p>
<p>
<img src="{% static `images/shuaige.jpg` %}">
</p>
</body>
</html>
相關文章
- Python全棧Web(Django框架、模型中的CRUD)Python全棧WebDjango框架模型
- Python全棧Web(Flask框架、多表關聯)Python全棧WebFlask框架
- Python之Web框架DjangoPythonWeb框架Django
- Django + DebugToolbar構建全棧WEB開發Django全棧Web
- Python全棧Web(Ajax概述建立)Python全棧Web
- Python全棧工程師學習筆記|Django框架介紹與安裝Python全棧工程師筆記Django框架
- Python全棧Web(HTML標籤大全)Python全棧WebHTML
- LOVEPHP-WEB全棧開源框架釋出PHPWeb全棧框架
- 固執己見的全棧web框架 — Redwood全棧Web框架
- Python全棧Web(JavaScript函式、陣列)Python全棧WebJavaScript函式陣列
- Python全棧Web(定位佈局、定位方式)Python全棧Web
- 分分鐘教你Python Web開發框架DjangoPythonWeb框架Django
- python中web開發框架Django的學習PythonWeb框架Django
- python全棧Python全棧
- Python框架DjangoPython框架Django
- Python全棧Web(AjaxJQuery-AJAX跨域請求)Python全棧WebjQuery跨域
- Python 中的 web 常見框架(Django 專案1)PythonWeb框架Django
- Django Web框架/Python框架-李強強-專題視訊課程DjangoWeb框架Python
- wsgiref模組、web框架、django框架簡介Web框架Django
- 如何才能成為一名Python web全棧工程師?PythonWeb全棧工程師
- 後端渲染:基於Deno的全新全棧Web框架Fresh介紹後端全棧Web框架
- Python Web 框架 Django 如何使用jwt獲取使用者資訊PythonWeb框架DjangoJWT
- Django(2) - Django模板Django
- Web全棧開發有前途嗎?Web全棧
- Django web框架-----url path name詳解DjangoWeb框架
- 前端全棧必會node框架koa。。。前端全棧框架
- Django模板Django
- HelloDjango 啟動!免費帶你學Django全棧!Django全棧
- Django 模板引擎以及模板Django
- Web3 全棧開發完整指南Web全棧
- python django中restful框架的使用PythonDjangoREST框架
- 10道題教你使用python Django框架來實現web應用,值得收藏PythonDjango框架Web
- python web(bottle框架)知行合一之-簡單知識付費平臺-”全棧“實踐(10)---註冊介面...PythonWeb框架全棧
- Django-模板Django
- Django 模板層Django
- Django模板層Django
- Web全棧工程師應該會什麼Web全棧工程師
- Spring Boot React 全棧 Web 開發原始碼Spring BootReact全棧Web原始碼