我的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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章