MVC的核心思想就是解耦。html
Django遵循MVC思想,其稱爲MVT。其中:node
解決python安裝包依賴問題python
在虛擬環境裏面配置,減小依賴。mysql
Django項目建立git
ORM模型類生產表github
sqlite3是一個小型數據庫,常常使用在手機登移動端sql
xxxxxxxxxx
C:\Users\admin>cd Desktop\bncDome\test1
C:\Users\admin\Desktop\bncDome\test1>python manage.py shell
In [3]: from booktest.models import BookInfo
In [6]: from datetime import date
In [4]: b=BookInfo()
# 插入
In [5]: b.btitle = '天龍八部'
In [9]: b.bpub_date = date(1990,1,1)
In [10]: b.save()
# 查找
In [14]: b2=BookInfo.objects.get(id=1)
In [15]: type(b2)
Out[15]: booktest.models.BookInfo
In [16]: b2.btitle
Out[16]: '天龍八部'
# 更新
In [17]: b2.btitle ='笑傲江湖'
In [18]: b2.save()
In [19]: b2.btitle
Out[19]: '笑傲江湖'
#刪除
In [23]: b2.delete()
生成遷移文件shell
生成遷移表數據庫
(1)本地化語言與時間django
(2)建立管理員
(3)啓動服務器
(4)瀏覽器訪問
(5)註冊模型類
(6)列表文本顯示
(7)自定義管理頁面
(1)編寫view代碼,定義視圖函數,返回瀏覽器的內容
(2)建立urls.py:配置url路由,注意嚴格匹配開頭結尾。地址視圖都在這裏直接匹配
(3) 項目的url文件配置,包含對應的app中的視圖
ur與視圖匹配過程
l
(1)根項目下建立模板templates文件夾
(2)配置模板目錄
這裏面的模板文件爲html,而模板中不單單爲html。其中支持變量,變量使用兩個花括號,;裏面是view.py中設置的字典鍵名。
(3)使用模板文件
注意:使用模板文件中須要以上四個步驟,對以上四步進行封裝爲my_render遍歷高效執行。幸運的是django已經幫咱們封裝好了這個方法爲render。其中第一個參數爲request,第二個是模板路徑,第三個參數是變量字典,沒有變量則爲空
(1)啓動項目解決端口號佔用,指定端口號
(2)案例介紹
(3)視圖編寫,先導入模型model類,查找MongoDB數據庫的表信息
(4)配置url,記得配置主項目下的urls.py,這個文件一次配置屢次使用
(5)建立模板文件
(6)顯示圖書信息,主頁信息
(7) 在視圖裏面編寫圖書管理的詳細信息
(8) 設置URL地址以及傳參
Django在頁面間傳參的原理是,在頁面url配置時候經過括號裏面的組進行傳參,後面視圖會自動解析組內容進行參數填充。多個參數多個組
(8)建立子頁面信息
(1)建立新的項目:django-admin startproject tets2
(2) 建立app: django-admin startapp booktest
(3) setting.py中的INSTALLED_APPS註冊應用booktest
(4) setting.py中的DATABASES中配置數據庫
xxxxxxxxxx
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME':'bj18',
'USER':'root',
'PASSWORD':'admin',
'HOST':'127.0.0.1',
'PORT':3306,
}
}
(5) 預先安裝pip install pymysql,以後在test2中須要加兩句話:
(6) 根目錄下啓動服務: python manage.py runserver
(7) 遷移表:python manage.py makemigrations
(8) mysql數據庫同步表:python manage.py migrate
(9) 編寫views
xxxxxxxxxx
from django.shortcuts import render
from booktest.models import BookInfo
# Create your views here.
def index(request):
# 1 查詢全部信息
books = BookInfo.objects.all()
# 2 使用模板
return render(request,'booktest/index.html',{'books':books})
(10) 設置模板目錄DIRS
xxxxxxxxxx
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
(11) 在templates下新建booktest文件夾,而後建立html
(12) 配置urls
xxxxxxxxxx
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('booktest/', include('booktest.urls') )
]
booktest的urls
xxxxxxxxxx
from django.urls import path,include
from booktest import views
urlpatterns = [
path('',views.index,name='index')
]
重定向
xxxxxxxxxx
from django.shortcuts import render,redirect
def create(request):
b = BookInfo()
b.btitle = '流星蝴蝶劍'
b.bpub_date= datetime.date(1990,1,1)
b.save()
# return HttpResponse('ok')
return redirect('index')
(13)mysql日誌文件
(14)模型-模型關係:1:1,1:多,多:多
兩個類之間有多對多的關係,ManyToManyField定義在哪一個類裏面均可以
(15)模型-關聯查詢
(16)管理器對象
(17)元選項:不會由於app改變影響模型類,而後從新作下遷移
模型類對應的表名不依賴於應用的名字