一個可使Web開發工做愉快而且高效的Web開發框架。 使用Django,使你可以以 小的代價構建和維護高質量的Web應用。html
Python的WEB框架有Django、Tornado、Flask 等多種,Django相較與其餘WEB框架其優點爲:大而全,框架自己集成了ORM、模型綁定、模板引擎、緩存、Session等諸多功能。python
著名的MVC模式:所謂MVC就是把web應用分爲模型(M),控制器(C),視圖(V)三層;他們之間以一種插件似的,鬆耦合的方式鏈接在一塊兒。mysql
模型負責業務對象與數據庫的對象(ORM),視圖負責與用戶的交互(頁面),控制器(C)接受用戶的輸入調用模型和視圖完成用戶的請求。web
Django的MTV模式本質上與MVC模式沒有什麼差異,也是各組件之間爲了保持鬆耦合關係,只是定義上有些許不一樣,Django的MTV分別表明:sql
Model(模型):負責業務對象與數據庫的對象(ORM)數據庫
Template(模版):負責如何把頁面展現給用戶django
View(視圖):負責業務邏輯,並在適當的時候調用Model和Template緩存
此外,Django還有一個url分發器,它的做用是將一個個URL的頁面請求分發給不一樣的view處理,view再調用相應的Model和Template服務器
pip3 install django # 默認安裝 django 1.1 版本
1、建立django程序cookie
首先在在終端上要先選擇路徑 在執行 建立django命令
2、程序目錄
3、配置文件
一、數據庫
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'django_models', 'USER':'root', 'PASSWORD':'', 'HOST':'', 'PORT':'', } }
# 因爲Django內部鏈接MySQL時使用的是MySQLdb模塊,而python3中還無此模塊,因此須要使用pymysql來代替 # 以下設置放置的與project同名的配置的 __init__.py文件中 import pymysql pymysql.install_as_MySQLdb()
TEMPLATE_DIRS = ( os.path.join(BASE_DIR,'templates'), )
三、靜態文件
建立靜態問價夾, 在settings 配置文件
STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'), )
http請求中產生兩個核心對象:
http請求:HttpRequest對象
http響應:HttpResponse對象
所在位置:django.http
以前咱們用到的參數request就是HttpRequest 檢測方法:isinstance(request,HttpRequest)
1 HttpRequest對象的屬性:
path: 請求頁面的全路徑,不包括域名 method: 請求中使用的HTTP方法的字符串表示。全大寫表示。例如 if req.method=="GET": do_something() elseif req.method=="POST": do_something_else() GET: 包含全部HTTP GET參數的類字典對象 POST: 包含全部HTTP POST參數的類字典對象 服務器收到空的POST請求的狀況也是可能發生的,也就是說,表單form經過 HTTP POST方法提交請求,可是表單中可能沒有數據,所以不能使用 if req.POST來判斷是否使用了HTTP POST 方法;應該使用 if req.method=="POST" COOKIES: 包含全部cookies的標準Python字典對象;keys和values都是字符串。 FILES: 包含全部上傳文件的類字典對象;FILES中的每個Key都是<input type="file" name="" />標籤中 name屬性的值,FILES中的每個value同時也是一個標準的python字典對象,包含下面三個Keys: filename: 上傳文件名,用字符串表示 content_type: 上傳文件的Content Type content: 上傳文件的原始內容 user: 是一個django.contrib.auth.models.User對象,表明當前登錄的用戶。若是訪問用戶當前 沒有登錄,user將被初始化爲django.contrib.auth.models.AnonymousUser的實例。你 能夠經過user的is_authenticated()方法來辨別用戶是否登錄: if req.user.is_authenticated();只有激活Django中的AuthenticationMiddleware 時該屬性纔可用 session: 惟一可讀寫的屬性,表明當前會話的字典對象;本身有激活Django中的session支持時該屬性纔可用。
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
2 mysql驅動程序
MySQLdb(mysql python)
mysqlclient
MySQL
PyMySQL(純python的mysql驅動程序)
3 在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
而後 ,安裝MySQL的驅動(driver),這裏須要建立一個密碼(個人是123)安裝成功後,
填入數據庫的名字,mysql的用戶名和密碼,而後就能夠進行鏈接了
成功後點擊右下角的apply和OK。
這是你就能夠看到數據庫裏的表和內容了:
是否是很方便呢?
若是你用的是sqlite數據庫就更簡單了,安裝完驅動後,直接將sqlite拖動到Database就能夠了: