1. 程式人生 > >django_01

django_01

init cfile pre deb 遍歷 服務器端 flask hang 創建目錄

1-1.Django
1.Django框架介紹
1.什麽是Django
Django是一個開源框架,2005年發布,采用Python語言編寫的.早期時主要做新聞和內容管理的網站的。Django本身提供了非常強大的後臺管理系統

版本:
最高:2.1.2
使用:1.11.8

官網:http://www.djangoproject.com
中文文檔:http://djangobook.py3k.cn/2.0/

2.框架模式
MTV
M :Models - 數據庫模型
T :Templates - 模板(網頁)
V :Views - 視圖

2.Django框架的安裝
1.安裝Django框架
1.查看已安裝的Django版本
1.進入到終端以及python的交互模式
交互模式:python3 / ipython3
2.交互模式中輸入:import django
如果未報錯:當前環境中已經裝好Django
如果報錯:當前環境中沒有Django
3.查看已安裝的版本
交互模式中:django.VERSION
2.安裝Django
1.在線安裝 - 使用 pip3
pip3 : 安裝到 python3
pip : 安裝到 python2

sudo pip3 install django
(安裝Django的最新版本)

sudo pip3 install django==1.11.8
(安裝Django的指定版本)
2.離線安裝
1.下載安裝包
2.解壓安裝包
tar -xvf Django-1.11.8.tar.gz
3.進入到解壓目錄中,找到 setup.py 文件
sudo python3 setup.py install
3.Django框架的使用

1.創建項目
1.創建目錄
作用:用於保存所有的Django項目(可選)
指令:mkdir django
2.創建項目
cd django
使用 django-admin 指令創建 Django 項目
語法:django-admin startproject 項目名
2.Django項目的結構介紹
1.manage.py
包含執行django中的各項操作的指令(子命令)
如:
啟動服務:runserver
創建應用:startapp
創建管理員:createsuperuser
... ...
2.主目錄(與項目名稱一致的目錄)
1. __init__.py
項目的初始化文件,服務被啟動,該文件自動被運行
2.urls.py
項目的基礎url配置文件(基礎的路由配置)
3.wsgi.py
Web Server Gateway Interface
Web服務網關接口
4.settings.py
項目的配置文件
1.BASE_DIR : 獲取當前項目的絕對路徑
2.DEBUG : 是否啟用調試模式
True :啟用調試模式(開發環境中推薦)
False :不啟用調試模式(生產環境中推薦)
3.ALLOWED_HOSTS
設置允許訪問到本項目的地址列表
如果為空的話,只有本機(localhost/127.0.0.1)才能訪問

如果允許在局域網中被外部機器訪問的話:
推薦寫 [‘*‘],表示任何能夠表示該機器的地址都能訪問到當前項目

如果允許被其他機器訪問的話,啟動服務時,必須使用以下方式:
./manage.py runserver 0.0.0.0:端口號
4.INSTALLED_APPS
指定已安裝的應用,如果有自定義應用的話,需要在此註冊
5.MIDDLEWARE
中間件,如果有自定義的中間件,需要在此註冊
6.ROOT_URLCONF
用於指定項目的基礎路由配置文件
7.TEMPLATES
指定模板的信息
8.DATABASES
指定數據庫的信息
9.LNAGUAGE_CODE
語言設置,如果需要中文的話,允許將值更改為 "zh-Hans"
10.TIME_ZONE
指定時區,中國時區的話,允許將值設置為 "Asia/Shanghai"
3.URL的使用
1.urls.py
默認在主目錄中,主路由配置文件,會包含最基本的地址映射。
作用:通過urls中定義好的地址找到對應的視圖處理函數
2.url的語法
作用:為了匹配用戶的訪問路徑
from django.conf.urls import url
語法:
url(regex,views,kwargs=None,name=None)
1.regex:允許是正則表達式,匹配請求的url
2.views:對應的視圖處理函數的名稱
3.kwargs:字典,用來向views傳參,如果沒有參數可以省略
4.name:為url起別名,在地址反向解析時使用


3.通過url向視圖傳參
1.使用正則表達式傳參
使用子組傳參,一個子組就是一個參數,要傳遞多個參數的話需要使用多個子組,中間用 / 隔開
子組 - ()

urlpatterns = [
#當訪問路徑是show/的時候,交給show_views處理
url(r‘^show/$‘,show_views),
#當訪問路徑是show/兩位數字的時候,交給show1_views函數處理
url(r‘^show/(\d{2})/$‘show1_views),
]

views.py
def show1_views(request,num1):
num1 表示的就是路徑 "show/"後面的第一個參數
pass

練習:
訪問地址:localhost:8000/四位數字/兩位數字/兩位數字
在網頁中輸出:生日為:xxxx年xx月xx日

2.使用url()第三個參數 - 字典傳參
dic = {
‘name‘:‘naruto‘,
‘age‘:18,
}

url(r‘^show3/$‘,show3_views,dic)

views.py
def show3_views(request,name,age):
pass

4.Django中的應用
1.什麽是應用
應用就是網站中的一個獨立的程序模塊
在Django中,主目錄一般不處理用戶的具體請求,主目錄主要做的是項目的初始化以及請求的分發(分布式請求處理),而具體的請求由各個應用去處理
2.創建應用
1.指令
./manage.py startapp 應用名稱

ex:
./manage.py startapp news
2.在 settings.py 中進行註冊
在 INSTALLED_APPS 中追加引用名稱
INSTALLED_APPS = [
‘djanog.contrib.admin‘,
... ...,
‘自定義應用名稱‘,
]

練習:
1.創建新項目 - netease
2.創建 index 應用 ,並註冊
3.創建 sport 應用 ,並註冊
4.創建 music 應用 ,並註冊
5.創建 news 應用 ,並註冊
3.應用的結構組成
1.migrations 目錄
存放數據庫的中間文件
2.__init__.py
應用的初始化文件
3.admin.py
應用的後臺管理配置文件
4.app.py
應用的屬性配置文件
5.models.py
Models 與模型相關的映射文件
6.tests.py
應用的單元測試文件
7.views.py
定義視圖處理函數的文件
4.分布式路由系統
在每個應用中創建 urls.py ,內容的格式參考主目錄的urls.py

當訪問路徑是 http://localhost:8000/music/xxxx
則交給music的urls去處理

當訪問路徑是 http://localhost:8000/news/xxxxx
則交給news的urls去處理

當訪問路徑是 http://localhost:8000/music/index
則交給music的urls找到 index_views 去處理

當訪問路徑是 http://localhost:8000/news/index
則交給news的urls找到 index_views去處理

當訪問路徑是 http://localhost:8000/news/
則交給news的urls找到 index_views去處理


作業:
1.訪問路徑 http://localhost:8000/login
交給 index 應用中的 login_views 去處理
2.訪問路徑 http://localhost:8000/register
交給 index 應用中的 register_views 去處理
3.訪問路徑 http://localhost:8000/
交給 index 應用中的 index_views 去處理


@app.route(‘/show/<int:age>‘)
def show(age):
age表示的就是地址上傳遞進來的age值

作業:
1.訪問路徑 http://localhost:8000/login
交給 index 應用中的 login_views 去處理
2.訪問路徑 http://localhost:8000/register
交給 index 應用中的 register_views 去處理
3.訪問路徑 http://localhost:8000/
交給 index 應用中的 index_views 去處理

只要訪問路徑不是 admin/**,music/**,news/** 的話,剩下的請求一律交給 index 應用去處理


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 的目錄

3.模板的加載方式
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,‘模板的名稱‘)

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.在模板中使用變量
{{變量名}}
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 %}

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

在Flask中:
return render_template(‘xxx.html‘,name=‘sf.zh‘,age=36)
return render_template(‘xxx.html‘,params={xxx:xxx})
return render_template(‘xxx.html‘,params=locals())

在 xxx.html 中,通過 :
params.變量名 來調用變量

django_01