Django基礎篇

djanjo簡介

Python的WEB框架有Django、Tornado、Flask 等多種,Django相較與其餘WEB框架其優點爲:大而全,框架自己集成了ORM、模型綁定、模板引擎、緩存、Session等諸多功能。Django是一個開放源代碼的Web應用框架,由Python寫成。採用了MVC的框架模式,即模型M,視圖V和控制器C。html

層次 職責
模型(Model),即數據存取層 處理與數據相關的全部事務: 如何存取、如何驗證有效性、包含哪些行爲以及數據之間的關係等。
視圖(View),即表現層
處理與表現相關的決定: 如何在頁面或其餘類型文檔中進行顯示。
模型與模板的橋樑。
模板(Template),即業務邏輯層
存取模型及調取恰當模板的相關邏輯。

 

Django流程介紹

著名的MVC模式:所謂MVC就是把web應用分爲模型(M),控制器(C),視圖(V)三層;他們之間以一種插件似的,鬆耦合的方式鏈接在一塊兒。python

 

 

Django的MTV模式本質上與MVC模式沒有什麼差異,也是各組件之間爲了保持鬆耦合關係,只是定義上有些許不一樣,Django的MTV分別表明:mysql

       Model(模型):負責業務對象與數據庫的對象(ORM)web

       Template(模版):負責如何把頁面展現給用戶正則表達式

       View(視圖):負責業務邏輯,並在適當的時候調用Model和Templatesql

Django URL 路由系統

一、每一個路由規則對應一個view中的函數數據庫

 

參數說明:django

  • 一個正則表達式字符串
  • 一個可調用對象,一般爲一個視圖函數或一個指定視圖函數路徑的字符串
  • 可選的要傳遞給視圖函數的默認參數(字典形式)
  • 一個可選的name參數
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程序

  • 終端命令:django-admin startproject sitename
  • IDE建立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'),

    )

Django Views(視圖函數)

http請求中產生兩個核心對象:

http請求:HttpRequest對象

http響應:HttpResponse對象

所在位置:django.http

一、HttpRequest對象的屬性:

 

 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')

 Django Models(模型)

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()

 利用pycharm建立數據庫步驟(mysql或sqlite)

下圖的執行步驟會建立數據庫,具體建立那種數據庫仍是要看你的設置

爲了更好的查詢修改數據庫,咱們能夠不使用Navicate,而是利用pycharm的Database

一、在pycharm上建立mysql圖形化數據庫步驟:

而後 ,安裝MySQL的驅動(driver),這裏須要建立一個密碼(個人是123)安裝成功後

 

填入數據庫的名字,mysql的用戶名和密碼,而後就能夠進行鏈接了

成功後點擊右下角的apply和OK。

這是你就能夠看到數據庫裏的表和內容了:

是否是很方便呢?

若是你用的是sqlite數據庫就更簡單了,安裝完驅動後,直接將sqlite拖動到Database就能夠了:

相關文章
相關標籤/搜索