1. 程式人生 > >我的Web後端開發學習之旅03

我的Web後端開發學習之旅03

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.啟動除錯程式

1542074353816

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>