Django簡(jiǎn)介:
Django是一個(gè)開放源代碼的web應(yīng)用框架,它是一個(gè)基于M(Model)V(View)C(Controller)構(gòu)造的框架尖奔,但是Django更關(guān)注的是M(Model)V(View)T(Templates)搭儒,即模型穷当,視圖,模板淹禾。模型(Model)就是用來與數(shù)據(jù)庫(kù)打交道馁菜,處理與數(shù)據(jù)相關(guān)的所有事務(wù),模型中定義的一個(gè)類铃岔,相當(dāng)于數(shù)據(jù)庫(kù)中的一張數(shù)據(jù)表汪疮,類中定義的不同的屬性,對(duì)應(yīng)的是這張數(shù)據(jù)表中相應(yīng)的字段毁习。視圖(View)是用來處理業(yè)務(wù)邏輯的智嚷,展示那些數(shù)據(jù),怎么展示這些數(shù)據(jù)纺且,都由視圖函數(shù)來控制盏道。模板(Templates)就是用來展示數(shù)據(jù)的HTML頁面,是展示給用戶看的頁面载碌。
————————————————————————————————————
MVC
大部分開發(fā)語言中都有MVC框架
MVC框架的核心思想是:解耦
降低各功能模塊之間的耦合性猜嘱,方便變更,更容易重構(gòu)代碼嫁艇,最大程度上實(shí)現(xiàn)代碼的重用
m表示model泉坐,主要用于對(duì)數(shù)據(jù)庫(kù)層的封裝
v表示view,用于向用戶展示結(jié)果
c表示controller裳仆,是核心,用于處理請(qǐng)求孤钦、獲取數(shù)據(jù)歧斟、返回結(jié)果
MVT
Django是一款python的web開發(fā)框架
與MVC有所不同,屬于MVT框架
m表示model偏形,負(fù)責(zé)與數(shù)據(jù)庫(kù)交互
v表示view静袖,是核心,負(fù)責(zé)接收請(qǐng)求俊扭、獲取數(shù)據(jù)队橙、返回結(jié)果
t表示template,負(fù)責(zé)呈現(xiàn)內(nèi)容到瀏覽器
——————————————————————————————————
1.先安裝django
pip install django==2.2.9
補(bǔ)充:如何把本地計(jì)算機(jī)的pip下載換成豆瓣鏡像下載(默認(rèn)為國(guó)外下載萨惑,下載速度較慢)
使用命令方式:
1)先打開git bush或者計(jì)算機(jī)終端捐康,查看是否有一個(gè).pip的文件。
cd ~
ls -a | grep .pip
2)如果沒有就創(chuàng)建一個(gè).pip的文件
mkdir .pip
3)再cd .pip中創(chuàng)建一個(gè)pip.conf的文件(直接用vim庸蔼,沒有這個(gè)文件就會(huì)創(chuàng)建)
vim pip.conf
4)在pip.conf文件中加入以下代碼就可以了解总。
[global]
index-url=https://pypi.doubanio.com/simple
直接創(chuàng)建方式:
打開C盤—> 用戶—> Administrator —>創(chuàng)建.pip文件夾—> 進(jìn)入.pip文件中創(chuàng)建一個(gè)pip.ini的文件(注意:這里的pip.ini可能有后綴.txt,要把.txt去掉)姐仅。
2.創(chuàng)建django項(xiàng)目并把它push到服務(wù)器上(做到版本控制花枫,也可以直接克隆項(xiàng)目)
1)創(chuàng)建django項(xiàng)目并新建倉(cāng)庫(kù)
django-admin startproject djangocase
cd djangocase
git init
上傳時(shí)有些文件沒有必要傳刻盐,所以可以先創(chuàng)建一個(gè).gitignore的文件,把不必上傳的文件放里面
vim .gitignore
注:這里不需要的文件可以用這個(gè)網(wǎng)站直接生成(http://gitignore.io/
劳翰,在網(wǎng)站里直接選擇自己所用的工具)敦锌,再加上venv和.idea就可以了
2)創(chuàng)建一個(gè)依賴項(xiàng)清單(把基本的依賴項(xiàng)寫進(jìn)去)
vim requirements.txt
3)上傳項(xiàng)目到服務(wù)器
git add .
git status
git commit -m '項(xiàng)目的初始版本'
git tag v0.1
git log
git remote add origin git@gitee.com:lxh5200/djangocase.git
git push -u origin master
注:服務(wù)器的倉(cāng)庫(kù)可以使用碼云(https://gitee.com/)或者GitHub(https://github.com/)這里使用碼云(國(guó)內(nèi)的速度較快)
3.用Pycharm來運(yùn)行和實(shí)現(xiàn)已經(jīng)創(chuàng)建的django項(xiàng)目
1)打開pycharm并使用git把服務(wù)器上的django項(xiàng)目克隆下來(克隆前先把前面創(chuàng)建在本地的項(xiàng)目刪除,在工作中大部分是使用這種方法來繼續(xù)進(jìn)行項(xiàng)目)
~ 使用PyCharm的"get from version control"
~ git clone gitgitee.com:lxh5200/djangocase.git
2)創(chuàng)建虛擬環(huán)境
~ Linux/macOS: source venv/bin/activate
~ Windows: "venv/Scripts/activate
3)重建依賴項(xiàng)
pip install -r requirements.txt
4.創(chuàng)建一個(gè)Django的APP運(yùn)用
python manage.py startapp carsearch
startapp 目錄在項(xiàng)目的根目錄中創(chuàng)建一個(gè)新目錄佳簸,這個(gè)目錄名為carsearch,其中包含一些python腳本:
? init.py:一個(gè)空 Python 腳本乙墙,存在的目的是告訴 Python 解釋器,這個(gè)目錄是一個(gè)Python 包溺蕉;
? admin.py:注冊(cè)模型伶丐,讓 Django 為你創(chuàng)建管理界面;
? apps.py:當(dāng)前應(yīng)用的配置疯特;
? models.py:存放應(yīng)用的數(shù)據(jù)模型哗魂,即數(shù)據(jù)的實(shí)體及其之間的關(guān)系;
? tests.py:存放測(cè)試應(yīng)用代碼的函數(shù)漓雅;
? views.py:存放處理請(qǐng)求并返回響應(yīng)的函數(shù)录别;
? migrations 目錄:存放與模型有關(guān)的數(shù)據(jù)庫(kù)信息。
views.py 和 models.py 是任何應(yīng)用中都有的兩個(gè)文件邻吞,是 Django 所采用的設(shè)計(jì)模式(即“模型-視圖-模板”模式)的主要部分组题。
1、在動(dòng)手創(chuàng)建模型和視圖之前抱冷,必須告訴 Django 項(xiàng)目這個(gè)新應(yīng)用的存在崔列。為此,要修改項(xiàng)目配置目錄中的 settings.py 文件旺遮。打開那個(gè)文件赵讯,找到 INSTALLED_APPS 列表,把 carsearch添加到末尾:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'carsearch',
]
為了方便使用耿眉,我們還可以配置應(yīng)用文件設(shè)置語言時(shí)區(qū):
找到settings.py 文件找到以下代碼并修改:
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
2边翼、再在文件主目錄下創(chuàng)建一個(gè)static的靜態(tài)資源文件夾,把所需的靜態(tài)資源放里面鸣剪,在static下創(chuàng)建manages(靜態(tài)圖片)组底,css,js筐骇。再在settings.py 文件中最后添加以下代碼:
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ]
STATIC_URL = '/static/'
這樣我們django項(xiàng)目的MVT中的m(models.py)和v(views.py)就有了债鸡,就差T了。我們?cè)赿jangocase根目錄下創(chuàng)建一個(gè)templates的文件夾铛纬,在里面創(chuàng)建模板頁index.html娘锁。
3、再回到應(yīng)用目錄饺鹃,修改views.py文件莫秆。
def search(request):
"""查詢"""
context = {
'searched': False,
'current_page': 1,
'total_page': 0
}
if request.method == 'POST':
carno = request.POST.get('carno', '')
carno = carno.replace(' ', '').upper()
context['carno'] = carno
page = int(request.POST.get('page', '1'))
size = int(request.POST.get('size', '5'))
if carno:
context['searched'] = True
queryset = Record.objects.filter(
Q(car__carno__startswith=carno) |
Q(car__owner__contains=carno)
).select_related('car').order_by('-offend_time')
paginator = Paginator(queryset, size)
context['total_page'] = paginator.num_pages
context['page_obj'] = paginator.get_page(page)
return render(request, 'index.html', context)
說明:Django框架通過shortcuts模塊的便捷函數(shù)render簡(jiǎn)化了渲染模板的操作间雀,有了這個(gè)函數(shù),就不用先創(chuàng)建Template對(duì)象再去調(diào)用render方法镊屎。
到此為止惹挟,我們還沒有辦法讓views.py中的render函數(shù)找到模板文件index.html,為此我們需要修改settings.py文件缝驳,配置模板文件所在的路徑连锯。
4、切換到項(xiàng)目目錄修改settings.py文件用狱。
# 此處省略上面的內(nèi)容
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',
],
},
},
]
# 此處省略下面的內(nèi)容
5运怖、創(chuàng)建一個(gè)管理員用戶
首先,我們需要?jiǎng)?chuàng)建一個(gè)用戶來登錄管理站點(diǎn)夏伊。使用下面的命令:
python manage.py createsuperuser
輸入你想要的用戶名
Username: admin
輸入郵箱地址
Email address: admin@example.com
最后輸入你的密碼兩次摇展。
Password: **********
Password (again): *********
Superuser created successfully.
6、 數(shù)據(jù)庫(kù)遷移
python manage.py makemigrations # 根據(jù)models變化生成遷移文件
python manage.py migrate # 將變更記錄同步到數(shù)據(jù)庫(kù)
7溺忧、開啟開發(fā)服務(wù)器
django管理站點(diǎn)會(huì)自動(dòng)啟動(dòng)咏连,我們只要啟動(dòng)開發(fā)服務(wù)器就可以來一起探索它了。
python manage.py runserver
現(xiàn)在打開一個(gè)瀏覽器鲁森,并且去/admin/-例如http://127.0.0.1:8000/admin/你應(yīng)該會(huì)看到Django administration的登錄界面祟滴。
進(jìn)入admin管理站點(diǎn)。
這樣一個(gè)簡(jiǎn)單的django小項(xiàng)目就建好了歌溉。
補(bǔ)充:創(chuàng)建并運(yùn)行Django項(xiàng)目的方法:
第一種方式:
- django-admin startproject django1906
- 使用PyCharm打開項(xiàng)目并創(chuàng)建虛擬環(huán)境
- 安裝項(xiàng)目所需依賴項(xiàng)
- 運(yùn)行項(xiàng)目
~ python manage.py runserver
~ Add Configuration --> + --> Python
--> Script Path (manage.py)
--> Parameters (runserver)
第二種方式:
- 用PyCharm創(chuàng)建一個(gè)普通的Python項(xiàng)目
- 安裝Django所需的依賴項(xiàng)
~ pip install django==2.1.14 - 把Python項(xiàng)目變成Django項(xiàng)目
~ django-admin startproject django1906 . - 運(yùn)行項(xiàng)目
第三種方式:
- 克隆項(xiàng)目到本地
~ 使用PyCharm的"get from version control"
~ git clone git@gitee.com:jackfrued/django1906.git - 創(chuàng)建虛擬環(huán)境
~ Linux/macOS: source venv/bin/activate
~ Windows: "venv/Scripts/activate" - 重建依賴項(xiàng)
~ pip install -r requirements.txt