Python的WEB框架有Django、Tornado、Flask 等多種,Django相較與其餘WEB框架其優點爲:大而全,框架自己集成了ORM、模型綁定、模板引擎、緩存、Session等諸多功能。Django是一個開放源代碼的Web應用框架,由Python寫成。採用了MVC的框架模式,即模型M,視圖V和控制器C。html
層次 | 職責 |
模型(Model),即數據存取層 | 處理與數據相關的全部事務: 如何存取、如何驗證有效性、包含哪些行爲以及數據之間的關係等。 |
視圖(View),即表現層 |
處理與表現相關的決定: 如何在頁面或其餘類型文檔中進行顯示。
模型與模板的橋樑。
|
模板(Template),即業務邏輯層 |
存取模型及調取恰當模板的相關邏輯。
|
著名的MVC模式:所謂MVC就是把web應用分爲模型(M),控制器(C),視圖(V)三層;他們之間以一種插件似的,鬆耦合的方式鏈接在一塊兒。python
Django的MTV模式本質上與MVC模式沒有什麼差異,也是各組件之間爲了保持鬆耦合關係,只是定義上有些許不一樣,Django的MTV分別表明:mysql
Model(模型):負責業務對象與數據庫的對象(ORM)web
Template(模版):負責如何把頁面展現給用戶正則表達式
View(視圖):負責業務邏輯,並在適當的時候調用Model和Templatesql
一、每一個路由規則對應一個view中的函數數據庫
參數說明:django
url(r'^index/(\d*)', views.index), url(r'^articles/([0-9]{4})/$', views.year_archive), url(r'^manage/(?P<name>\w*)/(?P<id>\d*)', views.manage), url(r'^manage/(?P<name>\w*)', views.manage,{'id':333}),
二、根據app對路由規則進行一次分類緩存
Django的一個url分發器,它的做用是將一個個URL的頁面請求分發給不一樣的view處理,view再調用相應的Model和Templateoracle
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^buy/',include('app.urls')), ]
url中別名(至關於當url變化時咱們不須要改 from提交的action後面url,會自動幫咱們改變)
1、建立django程序
其餘經常使用命令:
python manage.py runserver 0.0.0.0 python manage.py startapp appname python manage.py syncdb python manage.py makemigrations python manage.py migrate python manage.py createsuperuser
2、模版
TEMPLATE_DIRS = ( os.path.join(BASE_DIR,'templates'), )
3、靜態文件
STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'), )
http請求中產生兩個核心對象:
http請求:HttpRequest對象
http響應:HttpResponse對象
所在位置:django.http
一、HttpRequest對象的屬性:
HttpRequest對象的方法:get_full_path(), 好比:http://127.0.0.1:8000/index33/?name=123 ,req.get_full_path()獲得的結果就是/index33/?name=123
二、HttpResponse對象:
在HttpResponse對象上擴展的經常使用方法:頁面渲染:render,render_to_response,
頁面跳轉:redirect
locals: 能夠直接將函數中全部的變量傳給模板
return HttpResponse('ASD') return render_to_response('admin.html') return render(request,'admin.html') return redirect('/choutiadmin/login')
1、 數據庫配置
一、django默認支持sqlite,mysql, oracle,postgresql數據庫。
<1> sqlite
django默認使用sqlite的數據庫,默認自帶sqlite的數據庫驅動
引擎名稱:django.db.backends.sqlite3
<2>mysql
引擎名稱:django.db.backends.mysql
sqlite和mysql的區別是,建立表時sqlite無需提早建立表,而mysql必須是咱們提早生成數據庫,不然報錯
二、mysql驅動程序
MySQLdb(mysql python)
mysqlclient
MySQL
PyMySQL(純python的mysql驅動程序)
三、在django的項目中會默認使用sqlite數據庫,在settings裏有以下設置:
若是咱們想要更改數據庫,須要修改以下:
注意:NAME即數據庫的名字,在mysql鏈接前該數據庫必須已經建立,而上面的sqlite數據庫下的db.sqlite3則是項目自動建立
USER和PASSWORD分別是數據庫的用戶名和密碼。
設置完後,再啓動咱們的Django項目前,咱們須要激活咱們的mysql。
而後,啓動項目,會報錯:no module named MySQLdb
這是由於django默認你導入的驅動是MySQLdb,但是MySQLdb對於py3有很大問題,因此咱們須要的驅動是PyMySQL
因此,咱們只須要找到項目名文件下的__init__,在裏面寫入:
import pymysql
pymysql.install_as_MySQLdb()
下圖的執行步驟會建立數據庫,具體建立那種數據庫仍是要看你的設置
爲了更好的查詢修改數據庫,咱們能夠不使用Navicate,而是利用pycharm的Database
一、在pycharm上建立mysql圖形化數據庫步驟:
而後 ,安裝MySQL的驅動(driver),這裏須要建立一個密碼(個人是123)安裝成功後
填入數據庫的名字,mysql的用戶名和密碼,而後就能夠進行鏈接了
成功後點擊右下角的apply和OK。
這是你就能夠看到數據庫裏的表和內容了:
是否是很方便呢?
若是你用的是sqlite數據庫就更簡單了,安裝完驅動後,直接將sqlite拖動到Database就能夠了: