Django採用了MVT的軟件設計模式,即模型M,業務代碼V和模板T。
本文介紹了Django運行的基本配置。
一、構建簡單的MVT模型(三個文件夾,存放三種不同類型的文件):
1、目錄:
models:存放數據庫模型目錄
template:存放模板文件目錄
views:存放控制代碼目錄
二、Django基本說明:
1、安裝:把python目錄添加到系統的環境變量
pip install Django //使用python的pip命令安裝Django
2、使用manager.py新建項目:把Django目錄添加到系統環境變量
新建項目時,Django自動創建項目的目錄:
-項目名:
-manage.py:命令行管理工具,提供了與Django交互的接口。
常用命令,startapp name新建APP、makemagrations、migrate(Django的ORM)
-項目包名:以項目包命名的容器,主要實現配置和和管理功能。
-__init__.py:代表python一個包,python2.0必須有,才能代表是一個包,python3可以沒有
-settings.py:項目的配置文件,配置靜態文件地址和
-urls.py:配置網站目錄,指定網址轉向哪個文件。
-wsgi.py:一個 WSGI 兼容的 Web 服務器的接口,以便運行你的項目。它定義了TCP連接、HTTP原始請求和響應格式。
django-admin.exe startproject mysite //新建項目,名爲mysite
3、啓動項目:啓動後就可以使用web瀏覽器訪問該網站
cd mysite //進入mysite目錄 python manage.py runserver 127.0.0.1:8000 //可以省略ip:port,默認本機ip和8000端口,也可指定ip:端口
4、創建一個APP:
APP:相當於整個網站的一個模塊。比如:主站(index)\BBS\BLOG\Video\News等等,每一個都是一個獨立的頁面或功能。
python manage.py startapp blog //新建一個名字是blog的APP
新APP默認目錄:
-migrations包:修改數據表結構
-__init__:代表APP是個包。。。
-apps.py:配置當前App
-models.py:ORM,寫指定的類,通過命令可以創建數據庫結構。
-tests.py:單元測試
-views.py:業務代碼,存放後臺處理的代碼。
#配置urls.py指定網址訪問的頁面。APP要導入到views文件 import blog.views #在urlpatterns列表添加下面值 url(r'^blog',blog.views.login),
5、templates和static文件夾:新建項目後需要創建這兩個文件夾。
templates:存放.html類型的模板文件,在urls.py中可以更改設置
static:存放靜態文件,比如JS/jQuery/CSS類型的文件,在settings.py中設置才能正常被使用。
根據個人喜好設置,可以在每個APP下設置,也可在manage.py同級目錄設定通用的static,
以上兩個文件夾創建後的設置:
#增加settings.py文件templates的設置: TEMPLATES = ['DIRS': [os.path.join(BASE_DIR,'templates')]] //修改dirs的值,指定爲主目錄下的templates文件夾 #增加settings.py的static目錄的設置 STATICFILES_DIRS=(os.path.join(BASE_DIR,'static'),)
6、幾個錯誤:
1)、form請求錯誤,原因:form裏的action帶/,django裏的urls地址路由沒帶/,只在django框架裏的錯誤,
解決方法,兩處/都刪掉或都加/
2)、運行csrf錯誤,註釋掉csrf行,以後會對csrf進行設置
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%} #如果不想每次在模版中加載靜態文件都使用load加載static標籤,那麼可以在settings.py中的TEMPLATES/OPTIONS添加'builtins':['django.templatetags.static'],這樣以後在模版中就可以直接使用static標籤,而不用手動的load了。
'django.contrib.auth.middleware.AuthenticationMiddleware',
三、總結一個完整的HTTP請求過程: