溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Django學(xué)習(xí) 第一節(jié) 基礎(chǔ)環(huán)境配置

發(fā)布時(shí)間:2020-07-01 10:48:09 來源:網(wǎng)絡(luò) 閱讀:696 作者:shark_tear 欄目:數(shù)據(jù)庫

       Django是一個(gè)高效的web開發(fā)框架,使用Django可以用最小的代價(jià)構(gòu)建和維護(hù)高質(zhì)量的web應(yīng)用。通過減少重復(fù)的代碼,讓人能夠?qū)W⒂趙eb應(yīng)用上有趣的關(guān)鍵性的東西。

遵循了模型-視圖-控制器(MVC)的設(shè)計(jì)模式。簡單來說,MVC是一種軟件開發(fā)的方法,它把定義和訪問 數(shù)據(jù)的代碼(模型 model)、控制請(qǐng)求邏輯的代碼(控制器 controller)和用戶接口(視圖 view)分割開來。我們會(huì)在以后更加深入地討論MVC。

        這個(gè)方法最重要的優(yōu)點(diǎn)在于它的各個(gè)部分都是 松耦合 (loosely coupled)的。這樣用Django開發(fā)的Web程序中每個(gè)部分都有它自己單一的目的,并且可以單獨(dú)地被修改而不會(huì)影響到其他部分。比方說,一個(gè)程序員可以在不影響底層實(shí)現(xiàn)的情況下修改URL;設(shè)計(jì)師可以不需要接觸Python的代碼就修改頁面的HTML;數(shù)據(jù)庫管理員在重命名數(shù)據(jù)表之后只需要修改一個(gè)地方就可以了,而不需要在一大堆文件中查找替換。


一. Django基本環(huán)境的搭建

因?yàn)楣P者為自己定下的發(fā)展方向是運(yùn)維開發(fā),因此所有的開發(fā)工作都會(huì)是在linux平臺(tái)上進(jìn)行,后續(xù)的環(huán)境搭建也基本上都是在linux系統(tǒng)中,筆者使用的系統(tǒng)是RHEL7.2。通過pyenv來管理不同的虛擬環(huán)境,在不同的虛擬環(huán)境中可以使用不同的python版本,為后續(xù)的項(xiàng)目開發(fā)提供便利。

1. 安裝pip

yum install python-pip

2. 安裝pyenv

安裝pyenv的過程比較長,請(qǐng)見上一篇python開發(fā)環(huán)境準(zhǔn)備文章。

3. 使用pyenv創(chuàng)建一個(gè)虛擬環(huán)境,然后切換到虛擬環(huán)境

pyenv virtualenv 3.5.2 myproject
pyenv local myproject

4. 在虛擬環(huán)境中使用pip來安裝django

(myproject) # pip install django

5. 查看django是否安裝成功

# python -m django --version

可以看到下面的畫面,說明django安裝成功,這里安裝的django版本是1.9.8,是最新版本。

Django學(xué)習(xí) 第一節(jié) 基礎(chǔ)環(huán)境配置




二、Django的基本命令

首先我自己創(chuàng)建一個(gè)Django的目錄myproject,然后在這里目錄里存放我自己的Django工程

# mkdir myproject

1. 創(chuàng)建一個(gè)工程

# django-admin.py startproject project-name  
# django-admin.py startproject mywebsite  #我想創(chuàng)建一個(gè)自己的博客網(wǎng)站,項(xiàng)目叫mywebsite

2. 在工程里創(chuàng)建一個(gè)APP

# cd mywebsite       #進(jìn)入到mywebsite工程目錄
# project manage.py startapp app-name   #這是創(chuàng)建網(wǎng)站APP的默認(rèn)命令

#相當(dāng)于創(chuàng)建工程底下的子項(xiàng)目

# 網(wǎng)站的第一個(gè)版本,叫做myweb
# python manage.py startapp myweb

3. 同步數(shù)據(jù)庫

# python manage.py makemigrations   #同步數(shù)據(jù)庫
# python manage.py migrate      #創(chuàng)建數(shù)據(jù)庫
# python manage.py flush      #清空數(shù)據(jù)庫,留下空表(使用時(shí)要注意)
# python manage.py dbshell       #進(jìn)入數(shù)據(jù)庫命令行,如果是mysql或postresql會(huì)要用戶名密碼

我們剛開始創(chuàng)建網(wǎng)站,只需要先創(chuàng)建一個(gè)基礎(chǔ)的數(shù)據(jù)庫即可,其余的命令只需要記住就好。

$python manage.py migrate

Django學(xué)習(xí) 第一節(jié) 基礎(chǔ)環(huán)境配置

4. 啟動(dòng)自己的網(wǎng)站,使用Django初始頁面

# 命令說明

# python manage.py runserver         #默認(rèn)啟動(dòng)方式,監(jiān)聽在127.0.0.1:8000端口上
# python manage.py runserver  ip:port       #監(jiān)聽在其他IP上 
# 執(zhí)行命令
# python manage.py runserver 127.0.0.1:8000

然后打開瀏覽器,打開http://127.0.0.1:8000頁面,如果看到下面的頁面說明你的第一步已經(jīng)成功了。

Django學(xué)習(xí) 第一節(jié) 基礎(chǔ)環(huán)境配置

5. 更多命令

輸入python manage.py 命令可以查看詳細(xì)的命令列表,不記得相關(guān)命令時(shí)可以這樣查詢。

Django學(xué)習(xí) 第一節(jié) 基礎(chǔ)環(huán)境配置


三、Django框架簡單介紹

創(chuàng)建好了Django工程mywebsite和下屬的子項(xiàng)目myweb后,工程的文件目錄結(jié)構(gòu)如下:

# tree mywebsite
mywebsite/
├── manage.py
└── mywebsite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py

manag.py 文件是工程項(xiàng)目所有管理命令的入口,可以使用python manage.py查看所有的命令

mywebsite目錄下是工程的所有文件

  • __init__.py  工程的初始化文件

  • settings.py  Django的設(shè)置文件,如DEBBUG的開關(guān),靜態(tài)文件的位置等

  • urls.py     網(wǎng)址的入口,關(guān)聯(lián)對(duì)應(yīng)到views.py中的一個(gè)函數(shù)(或者generic類),訪問一個(gè)網(wǎng)址就對(duì)應(yīng)一個(gè)函數(shù)

  • wsgi.py     部署服務(wù)器時(shí)使用到的文件


子項(xiàng)目myweb的目錄結(jié)構(gòu)如下:

#tree myweb
myweb
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
└── views.py

admin.py    與后臺(tái)登錄有關(guān)的文件

apps.py     myweb屬性相關(guān)的文件

mirgrations  數(shù)據(jù)庫目錄

models.py    數(shù)據(jù)庫操作相關(guān)的文件

tests.py     項(xiàng)目測試有關(guān)的文件

views.py     網(wǎng)址函數(shù),和工程目錄中的urls.py相對(duì)應(yīng)


四 、啟動(dòng)Django默認(rèn)界面

1. 將新定義的myweb添加到settings.py中的INSTALL_APPS中

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myweb',                        #新加的內(nèi)容
]

還要將需要監(jiān)聽的網(wǎng)卡外網(wǎng)地址加入到settings.py中的可信賴的地址列表ALLOWED_HOSTS 中(Django1.10新增內(nèi)容):

ALLOWED_HOSTS = [
'192.168.1.246',
]


2. 在myweb里的views.py文件中定義視圖函數(shù)(訪問頁面時(shí)的內(nèi)容)

#vim myweb/views.py

#下面是添加到views.py文件里的內(nèi)容

#coding:utf-8

from django.http import HttpResponse
def index(request):
return HttpResponse("歡迎光臨小灰灰的第一個(gè)小站")

第一行聲明utf-8編碼,因?yàn)橄旅媸褂玫搅酥形?,不使用utf-8會(huì)報(bào)錯(cuò)。

第二行插入了一個(gè)HttpResponse類,這個(gè)類是用來向網(wǎng)頁返回內(nèi)容,把內(nèi)容顯示在網(wǎng)頁上面

第三行定義了一個(gè)函數(shù)index(request),第一個(gè)參數(shù)是request,和網(wǎng)頁發(fā)來的請(qǐng)求有關(guān),request變量里包含了get或post的內(nèi)容,用戶的瀏覽器和系統(tǒng)等信息包含在里面。函數(shù)返回一個(gè)HttpResponse對(duì)象,這個(gè)對(duì)象將包含的值顯示在往上面


3. 添加視圖函數(shù)對(duì)應(yīng)的網(wǎng)址,就在上面第三部分我們提到的urls.py文件里。

# vim mywebsite/urls.py
from django.conf.urls import url
from django.contrib import admin
from myweb import views as mywb_views    #新添加的內(nèi)容,從myweb項(xiàng)目里插入views模塊
urlpatterns = [
  url(r'^$',myweb_views.index),        #網(wǎng)址對(duì)應(yīng)到views模塊里定義的index函數(shù) 
  url(r'^admin/', admin.site.urls),
]

內(nèi)容修改后保存


4. 啟動(dòng)我們的第一個(gè)Django項(xiàng)目,因?yàn)槭窃谔摂M機(jī)上操作的,所以需要監(jiān)聽在外部網(wǎng)卡IP上

# python manage.py runserver 0.0.0.0:8000

然后在其他機(jī)器上打開瀏覽器, 輸入虛擬機(jī)的IP和端口http://192.168.1.246:8000 ,就可以看到如下的頁面,說明我們的第一個(gè)web站點(diǎn)創(chuàng)建成功。


這一章節(jié)的知識(shí)點(diǎn):

1. pip的國內(nèi)源配置

2. 虛擬開發(fā)環(huán)境的配置

3. Django的基本命令,包括項(xiàng)目、APP的創(chuàng)建,數(shù)據(jù)的創(chuàng)建和更新。

  • django-admin.py startproject project-name

  • project manage.py startapp app-name

  • python manage.py makemigrations   #同步數(shù)據(jù)庫

  • python manage.py migrate     #創(chuàng)建數(shù)據(jù)庫

  • python manage.py flush #清空數(shù)據(jù)庫,留下空表(使用時(shí)要注意)

  • python manage.py dbshell       #進(jìn)入數(shù)據(jù)庫命令行,如果是mysql或postresql會(huì)要用戶名密碼

  • python manage.py runserver                    #默認(rèn)啟動(dòng)方式,監(jiān)聽在127.0.0.1:8000端口上

  • python manage.py runserver  ip:port       #監(jiān)聽在其他IP上

4. Django項(xiàng)目的基本架構(gòu),views.py、setting.py、urls.py、admin.py這幾個(gè)文件的含義和聯(lián)系

  • views.py 定義url響應(yīng)函數(shù),與urls.py配合使用。

  • settings.py 定義一些基本的配置參數(shù)

  • urls.py 定義對(duì)應(yīng)的url規(guī)則

  • admin.py 對(duì)應(yīng)管理后臺(tái)


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI