Django基礎(chǔ)學(xué)習(xí)(第一周)


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)目的方法:
第一種方式:
  1. django-admin startproject django1906
  2. 使用PyCharm打開項(xiàng)目并創(chuàng)建虛擬環(huán)境
  3. 安裝項(xiàng)目所需依賴項(xiàng)
  4. 運(yùn)行項(xiàng)目
    ~ python manage.py runserver
    ~ Add Configuration --> + --> Python
    --> Script Path (manage.py)
    --> Parameters (runserver)
第二種方式:
  1. 用PyCharm創(chuàng)建一個(gè)普通的Python項(xiàng)目
  2. 安裝Django所需的依賴項(xiàng)
    ~ pip install django==2.1.14
  3. 把Python項(xiàng)目變成Django項(xiàng)目
    ~ django-admin startproject django1906 .
  4. 運(yùn)行項(xiàng)目
第三種方式:
  1. 克隆項(xiàng)目到本地
    ~ 使用PyCharm的"get from version control"
    ~ git clone git@gitee.com:jackfrued/django1906.git
  2. 創(chuàng)建虛擬環(huán)境
    ~ Linux/macOS: source venv/bin/activate
    ~ Windows: "venv/Scripts/activate"
  3. 重建依賴項(xiàng)
    ~ pip install -r requirements.txt
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末垄懂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子痛垛,更是在濱河造成了極大的恐慌草慧,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件榜晦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡羽圃,警方通過查閱死者的電腦和手機(jī)乾胶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來朽寞,“玉大人识窿,你說我怎么就攤上這事∧匀冢” “怎么了喻频?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肘迎。 經(jīng)常有香客問我甥温,道長(zhǎng)锻煌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任姻蚓,我火速辦了婚禮宋梧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狰挡。我一直安慰自己捂龄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布加叁。 她就那樣靜靜地躺著倦沧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪它匕。 梳的紋絲不亂的頭發(fā)上展融,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音超凳,去河邊找鬼愈污。 笑死,一個(gè)胖子當(dāng)著我的面吹牛轮傍,可吹牛的內(nèi)容都是我干的暂雹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼创夜,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼杭跪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起驰吓,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤涧尿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后檬贰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姑廉,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年翁涤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了桥言。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡葵礼,死狀恐怖号阿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鸳粉,我是刑警寧澤扔涧,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響枯夜,放射性物質(zhì)發(fā)生泄漏弯汰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一卤档、第九天 我趴在偏房一處隱蔽的房頂上張望蝙泼。 院中可真熱鬧,春花似錦劝枣、人聲如沸汤踏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽溪胶。三九已至,卻和暖如春稳诚,著一層夾襖步出監(jiān)牢的瞬間哗脖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工扳还, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留才避,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓氨距,卻偏偏與公主長(zhǎng)得像桑逝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子俏让,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容