您好,登錄后才能下訂單哦!
Django采用了MVT的軟件設(shè)計模式,即模型M,業(yè)務(wù)代碼V和模板T。
本文介紹了Django運行的基本配置。
一、構(gòu)建簡單的MVT模型(三個文件夾,存放三種不同類型的文件):
????1、目錄:
????????????models:存放數(shù)據(jù)庫模型目錄
????????????template:存放模板文件目錄
????????????views:存放控制代碼目錄
二、Django基本說明:
????????1、安裝:把python目錄添加到系統(tǒng)的環(huán)境變量
pip?install?Django????????//使用python的pip命令安裝Django
????????????注意:
????????????????????1)、安裝的時候會提示報錯,提示“timeout”,原因:下載地址速度太慢,換在國內(nèi)地址
?pip?install?Django?-i?https://pypi.tuna.tsinghua.edu.cn/simple
????????????????????**永久更換下載源地址:
???????????????????????????-? linux下,新建/修改/.pip/pip.conf文件,添加下列內(nèi)容
????????????????????[global]???????????????????? ????????????????????timeout?=?300 ????????????????????index-url?=?https://pypi.tuna.tsinghua.edu.cn/simple ????????????????????[install] ????????????????????trusted-host?=?tsinghua.edu.cn
???????????????????????? ? - Windows下,在文件夾瀏覽窗口輸入%USERPROFILE%,新建\pip\pip.ini,添加下列內(nèi)容:
????????????????????????????????????[global]???????????????????????????????????? ????????????????????????????????????timeout?=?300 ????????????????????????????????????index-url?=?https://pypi.tuna.tsinghua.edu.cn/simple ????????????????????????????????????[install] ????????????????????????????????????trusted-host=tsinghua.edu.cn
? ? ? ? ? ? ? ? ?? 2)、安裝時提示“No module named pip”
? ? ? ? ? ? ? ? ? ? ? ? 原因有二,1、沒有安裝pip,如果使用python.exe安裝,把python主目錄下的Scripts添加到環(huán)境變量
????????????????????????????????????????? 2、Windows10下,右鍵使用管理員權(quán)限運行cmd
????????????????????3)、pip下載下來的包直接存在python主目錄下的Scripts下,而Scripts目錄添加到了環(huán)境變量,所以安裝后,可以使用django這個命令確認(rèn)安裝狀態(tài)
??????2、使用manager.py新建項目:把Django目錄添加到系統(tǒng)環(huán)境變量
????????????新建項目時,Django自動創(chuàng)建項目的目錄:
????????????-項目名:
????????????????-manage.py:命令行管理工具,提供了與Django交互的接口。
????????????????????常用命令,startapp name新建APP、makemagrations、migrate(Django的ORM)
????????????????-項目包名:以項目包命名的容器,主要實現(xiàn)配置和和管理功能。
????????????????????-__init__.py:代表python一個包,python2.0必須有,才能代表是一個包,python3可以沒有
????????????????????-settings.py:項目的配置文件,配置靜態(tài)文件地址和
????????????????????-urls.py:配置網(wǎng)站目錄,指定網(wǎng)址轉(zhuǎn)向哪個文件。
????????????????????-wsgi.py:一個 WSGI 兼容的 Web 服務(wù)器的接口,以便運行你的項目。它定義了TCP連接、HTTP原始請求和響應(yīng)格式。
django-admin.exe?startproject?mysite????????//新建項目,名為mysite
????????3、啟動項目:啟動后就可以使用web瀏覽器訪問該網(wǎng)站
cd?mysite???????????????//進入mysite目錄 python?manage.py?runserver?127.0.0.1:8000???????//可以省略ip:port,默認(rèn)本機ip和8000端口,也可指定ip:端口
????????4、創(chuàng)建一個APP:
???????????? ?? APP:相當(dāng)于整個網(wǎng)站的一個模塊。比如:主站(index)\BBS\BLOG\Video\News等等,每一個都是一個獨立的頁面或功能。
python?manage.py?startapp?blog????????????//新建一個名字是blog的APP
????????????????新APP默認(rèn)目錄:
????????????????-migrations包:修改數(shù)據(jù)表結(jié)構(gòu)
????????????????-__init__:代表APP是個包。。。
????????????????-apps.py:配置當(dāng)前App
????????????????-models.py:ORM,寫指定的類,通過命令可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)。
????????????????-tests.py:單元測試
????????????????-views.py:業(yè)務(wù)代碼,存放后臺處理的代碼。
#配置urls.py指定網(wǎng)址訪問的頁面。APP要導(dǎo)入到views文件 import?blog.views #在urlpatterns列表添加下面值 url(r'^blog',blog.views.login),
????????5、templates和static文件夾:新建項目后需要創(chuàng)建這兩個文件夾。
????????????templates:存放.html類型的模板文件,在urls.py中可以更改設(shè)置
????????????static:存放靜態(tài)文件,比如JS/jQuery/CSS類型的文件,在settings.py中設(shè)置才能正常被使用。
????????????????????????根據(jù)個人喜好設(shè)置,可以在每個APP下設(shè)置,也可在manage.py同級目錄設(shè)定通用的static,
????????????以上兩個文件夾創(chuàng)建后的設(shè)置:
#增加settings.py文件templates的設(shè)置: TEMPLATES?=?['DIRS':?[os.path.join(BASE_DIR,'templates')]]???//修改dirs的值,指定為主目錄下的templates文件夾 #增加settings.py的static目錄的設(shè)置 STATICFILES_DIRS=(os.path.join(BASE_DIR,'static'),)
? ? ? ? 6、幾個錯誤:
????????????1)、form請求錯誤,原因:form里的action帶/,django里的urls地址路由沒帶/,只在django框架里的錯誤,
????????????解決方法,兩處/都刪掉或都加/
????????????2)、運行csrf錯誤,注釋掉csrf行,以后會對csrf進行設(shè)置?
????????????3)、指定全局static目錄后,無法加載CSS樣式,提示Resource interpreted as Stylesheet but transferred with MIME type application/x-css
#html加載的CSS文件 <link?rel='style'?texttype='text/css'?href='/static/css.css'/> #解決方法:在html首行加 {%load?static%} #如果不想每次在模版中加載靜態(tài)文件都使用load加載static標(biāo)簽,那么可以在settings.py中的TEMPLATES/OPTIONS添加'builtins':['django.templatetags.static'],這樣以后在模版中就可以直接使用static標(biāo)簽,而不用手動的load了。
'django.contrib.auth.middleware.AuthenticationMiddleware',
三、總結(jié)一個完整的HTTP請求過程:
????????
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。