我的Web後端開發學習之旅03
阿新 • • 發佈:2018-11-19
Python MTV(MVC)
M: model 模型層
操作資料庫
T: template 模板層
顯示資料庫
V: view 控制層
接收使用者請求,響應請求
MTV步驟
開啟pycharm建立一個Django專案
(
根據python版本切換django版本
控制檯輸入:pip install django==版本號
)
1.先建立一個app
控制檯輸入:python manage.py startapp 名字
也可以通過Tools中的 Run manage.py Task 開啟命令列進行輸入
2.在settings裡邊註冊app
將建立的app名寫入INSTALLED_APPS=[]
3.在控制層views中寫一個檢視
#如何寫檢視
#1.定義檢視函式,在檢視函式中必須定義一個request物件
# 用來接收客戶端請求,且形參第一個必須是request
#2.建立響應物件 HttpResponse 先匯入HttpResponse包
#3.返回響應物件
#4.建立完一個檢視函式一定要去urls.py中註冊
def index(request):
print('index')
msg = 'Hello Django'
response = HttpResponse(f'<h1>{msg}<h1>' )
return response
4.在urls.py檔案中註冊
#瀏覽器位址列的url對映到檢視函式
#先將app中的views匯入
from demo01 import views
urlpatterns = [
url('admin/', admin.site.urls),
url('index/',views.index)#路徑名最好和函式名相同
#第一個是瀏覽器的輸入路徑,第二個,檢視函式名
]
5.啟動除錯程式
6.返回一個html檔案的內容(建立模板)
步驟:
#1.建立一個檢視函式 使用render函式 app建立時在views中已經導好了render包
# 在urls.py註冊檢視函式
# url('temp/',views.temp)
#2.在templates中建立一個和檢視函式命名相同的html檔案
def temp(request):
pass
return render(request,'templates中建立的html檔名')
7.html使用靜態檔案(主要是一些css,js,img檔案)無資料互動
#1.根目錄建立一個static資料夾,下邊可以建立類似於h5的資原始檔夾(js,css,img)
#2.在settings檔案中註冊該資料夾(一般寫在根目錄settings檔案最後處)
# 2.1 宣告常量 STATICFILES_DIRS (名字別改)
# 值是元組或者列表 元素可以是相對路徑也可以是絕對路徑(最好是相對路徑)部署時可以使用絕對路徑
# 如果檔案需要移植就寫相對路徑,一般採用路徑拼接
# 2.2 STATICFILES_DIRS =(os.path.join(BASE_DIR,'static'),) 因是元組 後邊的逗號不能省
#3.轉入第6步的過程
#4.在html檔案中使用匯入時用/static/需要引入的檔案的名稱
# <link href='/static/css/common.css' rel ='stylesheet' type ='text/css'>
注意:靜態檔案的載入是兩步完成的,html檔案內容通過字串的格式返回給模板進行渲染,當編譯靜態檔案那一行時,會再次請求伺服器載入該靜態檔案內容,並不是說該檔案的內容已經在html檔案的內容中了,所以這裡會有兩次請求
8.html使用動態檔案 (有資料的互動,類似於ajax+dom 的操作,結合資料庫,使用模板語法)
#1.修改資料庫配置,在根目錄下的settings.py檔案中找到DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #該處的資料庫看要求切換。這裡使用mysql
'NAME': 'test', #資料庫名
'HOST':'127.0.0.1', #資料庫ip地址
'PORT':'3306', #資料庫埠
'USER':'root', #資料庫賬戶名
'PASSWORD':'root', #資料庫密碼
'CHARSET':'utf8', #資料庫內容編碼格式
}
}
#2.在資料庫中建立一個庫,庫名與settings.py中設定的保持一致
#3.在pycharm中安裝資料庫的驅動 pip install pymysql
# 並在Django中初始化pymysql(根目錄的__init__.py檔案中)
import pymysql
pymysql.install_as_MySQLdb()
#4.在app檔案下的models.py檔案中定義模型
# 寫一個類繼承models.Model並定義屬性(對應資料庫中的列名)
#
class User(models.Model):
user_id = model.AutoField(primary_key=True)
username = model.CharField(max_length=64)
password = model.CharField(max_length=64)
#5. 在資料庫中建立表,開啟控制檯,輸入下邊的程式碼
python manage.py makemigrations app名稱 #生成遷移檔案
python manage.py migrate app名稱
#預設的表名是 app名稱_模型函式名(小寫)
#修改預設表名方法:
class Meta:
db_table = '表名'
#注意:每次改動或者重新命名後都要重新執行上邊的兩行程式碼
#放在模型類下邊即可
#之後在資料庫中往該表中插入若干資料
#6. 先將.models模組中的建立的User類匯入 from .models import User
# 接著轉入第6步 先建立檢視函式 並在urls.py中註冊,
# 動態檔案重要使用render函式的第三個引數,context 是個字典物件 這就是面向物件操作資料庫
def test_db(request):
users = User.objects.all() # == SELECT * FROM user
return render(request,'templates中建立的html檔名',context ={'users':users})
#7. 轉入第7步 在根目錄下建立static檔案,放入需要引用的靜態檔案資源並在根目錄下的settings.py檔案中註冊
#8.在templates中建立一個和檢視函式相同名字的html檔案
#9.在html介面中使用用模板語法,動態的給元素賦值
<table>
<tr>
<th>ID</th>
<th>使用者名稱</th>
<th>密碼</th>
</tr>
{% for user in users %}
<tr>
<td>{{ user.user_id }}</td>
<td>{{ user.username }}</td>
<td>{{ user.password }}</td>
</tr>
{% endfor %}
</table>