1.簡(jiǎn)介
Django是一個(gè)開放源代碼的web框架,MVC開發(fā)模式.(在Django里稱之為MTV).
2.mvc和mtv
兩者的開發(fā)思路都是基本類似的,只是叫法有點(diǎn)區(qū)別.
MVC
- M : model--模型,負(fù)責(zé)操縱數(shù)據(jù)庫(kù),封裝數(shù)據(jù)
- V : view--視圖,負(fù)責(zé)在前端將取到的數(shù)據(jù)展示給用戶
- C : controllor--控制器, 負(fù)責(zé)處理系統(tǒng)的業(yè)務(wù)邏輯
MTV
- M : model--模型, 也是操作數(shù)據(jù)
- T : template--視圖(模板), 負(fù)責(zé)前端頁(yè)面的渲染,展示給用戶(類似mvc的v)
- V : view--控制器,處理新的業(yè)務(wù)邏輯(類mvc的C)
3.使用Django的準(zhǔn)備工作
(1)在cmd中安裝virtualenv,
pip install virtualenv
(2)創(chuàng)建一個(gè)env文件夾,作為存放環(huán)境的文件夾.
(3)在env文件夾里創(chuàng)建一個(gè)虛擬環(huán)境
virtualenv -p [python安裝路徑]\python.exe --no-site-packages [新的文件夾名]
(4)進(jìn)入剛創(chuàng)建好的虛擬環(huán)境的文件夾里的Scripts文件夾下
(5)在此文件夾下執(zhí)行下面語(yǔ)句,執(zhí)行后在cmd命令行前面會(huì)多出一個(gè) (xxx) 的字樣,
avtivate
(6)再安裝django1.11
pip install django == 1.11
(7)進(jìn)入(或者創(chuàng)建)工程所在目錄(workspace)
(8)在目錄下通過cmd創(chuàng)建一個(gè)空的django項(xiàng)目:
django-admin startproject [工程名]
4.Django的初次使用
(1)使用以上命令在cmd中創(chuàng)建一個(gè)新的工程, 在pycharm中打開所示的目錄結(jié)構(gòu)

(2)在IDE的setting里面給工程手動(dòng)添加一個(gè)剛才創(chuàng)建好的虛擬環(huán)境,(由于使用的是上課時(shí)使用過的環(huán)境預(yù)裝了pymysql模塊)

(3)打開終端,在終端里輸入指令:
python manage.py
查看各種指令
(djenv5) F:\Pythonworkspace\Unit3Django\day01_test>python manage.py
Type 'manage.py help <subcommand>' for help on a specific subcommand.
Available subcommands:
[auth]
changepassword
createsuperuser //創(chuàng)建一個(gè)超級(jí)用戶(登錄和管理后臺(tái)用)
[contenttypes]
remove_stale_contenttypes
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations //執(zhí)行這個(gè)命令,生成數(shù)據(jù)庫(kù)遷移相關(guān)的中間文件
migrate //真正的執(zhí)行數(shù)據(jù)庫(kù)遷移
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
[sessions]
clearsessions
[staticfiles]
collectstatic
findstatic
runserver //運(yùn)行服務(wù)器
(4)使用以下指令將項(xiàng)目部署到web上,其中ip為本機(jī)的時(shí)候可以省略,端口也可以省略,省略的時(shí)候默認(rèn)為8000端口
python manage.py runserver [ip]:[port]
(5)成功部署服務(wù)后,打開瀏覽器輸入一下地址,會(huì)訪問到如下的網(wǎng)頁(yè),證明一個(gè)正式的django項(xiàng)目啟動(dòng)了!
127.0.0.1:8000

5.Django中的幾個(gè)簡(jiǎn)單的配置
此處以添加一個(gè)后臺(tái)管理員為例
(1)如果要想連接到自己的mysql數(shù)據(jù)庫(kù),則要在setting.py中修改和添加如下內(nèi)容:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': 3306
}
}
(2)在_init_.py中添加mysql的連接驅(qū)動(dòng),在python2.x中不需要這么做,系統(tǒng)會(huì)自動(dòng)連接,但是在python3.x中要手動(dòng)添加驅(qū)動(dòng)才能連接數(shù)據(jù)庫(kù)!
import pymysql
pymysql.install_as_MySQLdb()
(3)如果要將前端頁(yè)面顯示的內(nèi)容顯示為中文,在setting.py的倒數(shù)某一行內(nèi)中修改設(shè)置:
LANGUAGE_CODE = 'zh-hans'
(4)在數(shù)據(jù)路連接配置好以后,再自己通過Navicat建好數(shù)據(jù)庫(kù)就可以在終端使用migrate命令進(jìn)行數(shù)據(jù)庫(kù)遷移了:
python manage.py migrate
(5)在一連串的ok結(jié)束后,就表示遷移成功,,用Navicat查看數(shù)據(jù)庫(kù),會(huì)發(fā)現(xiàn)多了很多表

(6)現(xiàn)在在終端創(chuàng)建一個(gè)超級(jí)管理用戶:
python manage.py createsuperuser
(7)打開127.0.0.1:8000/admin來到如下頁(yè)面
(8)使用剛剛創(chuàng)建的超級(jí)管理用戶登錄,就來到了后臺(tái)
6.關(guān)于模型(model)
(1)準(zhǔn)備工作:生成一個(gè)app
在創(chuàng)建模型前先在終端生成一個(gè)名為''app''的app(名字可以隨便起)
python manage.py startapp app
然后在工程下會(huì)生成一個(gè)app的目錄結(jié)構(gòu)

(2)創(chuàng)建模型
在app\models.py里創(chuàng)建一個(gè)student模型,
from django.db import models
# Create your models here.
#以下為添加的代碼
class Student(models.Model):
#這個(gè)模型擁有s_name和s_age兩個(gè)字段
s_name = models.CharField(max_length=10, unique=True)
s_age = models.IntegerField(default=16)
#為這個(gè)模型創(chuàng)建一張表
class Meta:
db_table = 'student'
(3)為了使模型中的數(shù)據(jù)可以在前端展示,在app\admin.py中加一些操作
from django.contrib import admin
# Register your models here.
#以下為添加的代碼
from app.models import Student
admin.site.register(Student)
(4)這樣我們就可以在網(wǎng)頁(yè)后臺(tái)對(duì)student這個(gè)模型進(jìn)行一些curd操作


(5)當(dāng)然,這樣存在一個(gè)問題,就是系統(tǒng)對(duì)student這張表的數(shù)據(jù)顯得不夠直觀,這樣我們可以對(duì)這個(gè)模型的展示效果進(jìn)行修整.還是在app\admin.py進(jìn)行操作
from django.contrib import admin
# Register your models here.
#以下為添加的代碼:
from app.models import Student
class StudentAdmin(admin.ModelAdmin):
list_display = ['id', 's_name', 's_age'] #選擇展示的字段
search_fields = ['s_age'] #設(shè)置一個(gè)按照s_age這個(gè)字段的搜索框
list_filter = ['s_age'] #設(shè)置一個(gè)過濾器(按照里面的條件進(jìn)行篩選)
admin.site.register(Student, StudentAdmin)
效果如下:用這樣的方式來展示出student這個(gè)模型對(duì)應(yīng)的數(shù)據(jù),更加清晰明朗



