django 基礎篇

jdango 簡介:

一個可使Web開發工做愉快而且高效的Web開發框架。 使用Django,使你可以以 小的代價構建和維護高質量的Web應用。html

Python的WEB框架有Django、Tornado、Flask 等多種,Django相較與其餘WEB框架其優點爲:大而全,框架自己集成了ORM、模型綁定、模板引擎、緩存、Session等諸多功能。python

django流程介紹

  著名的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服務器

 

安裝django

pip3 install django   # 默認安裝 django 1.1 版本

基本配置

1、建立django程序cookie

  首先在在終端上要先選擇路徑 在執行 建立django命令

 

  • 終端命令:django-admin startproject django_01     -- 建立django程序 
  •   python manage.py startapp app01            --建立app 配置文件
  •   python manage.py makemigrations      -- 生成配置文件
  •   python manage.py migrate              -- 根據配置文件建立數據庫相關功能
  •       python manage.py runserver 127.0.0.1:8000   --執行django程序      
  •   python manage.py createsuperuser        -- 建立超級用戶

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

 django views(視圖函數)

 

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支持時該屬性纔可用。
HttpResponse 對象屬性

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

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就能夠了:

 

 

參考博文地址:瞭解更多請點這裏    瞭解更多請點這裏

相關文章
相關標籤/搜索