Django架構-基礎篇

來源:互聯網
上載者:User

標籤:應用   其他   template   開啟   不用   映射關係   技術分享   you   use   

Django架構簡介一、軟體架構模式MVC和MTV1、MVC模型

MVC(model view controller)是軟體工程中的一種軟體架構模式,把軟體系統分為三個基本部分:模型(model)、視圖(view)和控制器(controller),具有耦合性低,重用性高,生命週期成本低等優點。

 

2、MTV模型

Django架構的設計模式借鑒了MVC架構的思想,也是分別三部分,來降低各個部分之間的耦合性。

Django的MTV分別代表:

  Model(模型):和資料庫相關的,負責業務對象與資料庫的對象(ORM)

  Template(模板):放所有的html檔案,負責如何把頁面展示給使用者

           模板文法:目的是將自變數(資料庫的內容)如何巧妙的嵌入到html頁面中

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

  此外,Django還有一個URL分發器。它的作用是將一個個URL的頁面請求分別發給不同的Views處理,Views再調用相應的Model和Template。

3、MVC和MTCV的比較

二、Django 下載安裝

查看django版本:

cmd——>python -m django --version

pycharm——> import django ; print(django.version)
   命令列下載安裝:
dos視窗中:pip  install  django== 1.11.15 # 等號後為版本號碼,不加的話預設安裝最新版本pip  install  -i  https://pypi.doubanio.com/simple/  django==1.11.15(或者-i 指定源)
  pycharm的方式安裝
開啟pycharm -->file -->settings --> project interpreter --> 點擊右側綠色加號 -->在彈出對話方塊中輸入django -->選中specify version,指定下載版本,預設最高版  -->最後點擊左下角 install package註:預設從https://pypi.python.org/simple下載模組,可更改國內的豆瓣源,點擊install package 右側的Manage Repositories 在裡面添加其它的源,如https://pypi.doubanio.com/simple/

詳細見:

三、建立Django項目對象  命令列建立:
切換目錄到預存放專案檔的檔案目錄django-admin  startproject   項目名稱eg:  django-admin  startproject    myblog

組建目錄結構如下:

  • manage.py------開機檔案 (Django項目裡面的工具,通過它可以調用Django shell的數目和資料庫等)
  • settings.py------包含了項目的一些設定,包括資料庫資訊、調試標誌以及其他一些工作的變數。
  • urls.py-----------路徑與視圖函數的映射關係
  • wsgi.py ...........幫我們實現socket,響應http請求

  註:命令列建立,不會建立templates模板【用於僅存放html檔案,css,js等靜態檔案放到建立的static目錄中】,

需要自己在項目根目錄即與manage.py同級目錄下建立templates檔案夾,且要到settings.py中修改templates的DIRS中加入os.path.join(BASE_DIR,‘templates‘)

  pycharm方式建立

 開啟pycharm--->file ---->new project ---> 選中django 

 

 建立完成後項目目錄結構如下:

註:上面app01為建立的一個應用,Mysite為建立django目錄時,自動在項目名下建立一個同名的目錄。

四、啟動Django項目  1、命令列方式
切換到django項目根目錄下(含有manage.py 的檔案)# 預設為本地,連接埠為8000python manage.py runserver    # 127.0.0.1:8000  # 可修改連接埠python manage.py runserver 80   # 127.0.0.1:80# 可修改ip和連接埠,4個零表示所有人都可以訪問python manage.py runserver 0.0.0.0:80   # 0.0.0.0:80註:當項目上線後,需將ip和連接埠改為實際的
  2、pycharm方式

一個項目就是一個包,不要單獨執行某個py檔案,而是運行整個項目

五、建立應用

註:因為一個項目要實現多個功能,因此一個Django項目可以分為很多個APP,用來隔離不同功能模組的代碼

如果不建立app也可以執行項目,即視圖函數直接寫在urls.py中,在settings.py中配置相關的模板,資料庫資訊,靜態檔案等資訊。

  命令列建立app
python manage.py  startapp  應用程式名稱eg: python manage.py startapp  app01

執行命令後,項目目錄下多出一個app01的檔案夾,目錄結構如下:

app01/    migrations         記錄修改models即orm操作資料庫的更改資訊,每次更改都會在改目錄下建立一個檔案        __init__.py         __init__.py            admin.py               apps.py            記錄app資訊,當在settings.py中註冊app時是從此處找    models.py          記錄建立類【即相當如向資料庫中建立表】在此處建立    tests.py               views.py           本app自己的商務邏輯函數即視圖函數寫在這裡
  使用PyCharm建立

可以使用PyCharm的manage.py工具來執行命名。在主功能表列中選擇Tools,在下拉式功能表中選擇Run manage.py task,會出現如所示的工具對話方塊:


在彈出的命令視窗中直接輸入下面的命令便可建立app:

startapp app01

使用PyCharm的manage.py工具執行命令時,只用輸入命令及參數即可,不再輸入python manage.py了。

  註冊app應用

建立完app後,想要使用,需先註冊才能使用,在django根目錄下的settings.py檔案中的INSTALLED_APPS模組中註冊app資訊

格式如下:

應用程式名稱.apps.應用程式名稱Config
樣本:【本質是匯入應用目錄下apps中為app建立的類】
INSTALLED_APPS = [ ‘django.contrib.admin‘, ‘django.contrib.auth‘, ‘django.contrib.contenttypes‘, ‘django.contrib.sessions‘, ‘django.contrib.messages‘, ‘django.contrib.staticfiles‘, ‘classModel.apps.ClassmodelConfig‘]

apps.py檔案內容如:

六、配置django項目與資料庫mysql的串連

1、安裝mysql資料庫軟體

2、安裝 模組pymysql【python3.6後串連mysql只能用pymysql】

cmd--> pip3  install pymysql

3、手動串連資料庫,建立一個庫及建立一個操作此資料庫的使用者,賦予許可權【django的ORM只能建立表,不能建立庫】

# 建立庫create database db_name charset utf8;# 建立使用者及賦予許可權grant all privileges on db_name.* to ‘userName‘@‘ip‘ identified by ‘pwd‘;

4、在Django項目總設定檔setting.py同級目錄下[不是app下的__init__]的__init__.py檔案中設定項目使用pymysql來操作資料庫

import pymysqlpymysql.install_as_MySQLdb()       # 告知django使用pymysql來串連書庫

5、在Django項目總設定檔setting.py中的DATABASES模組中配置串連資料庫相關資訊,格式如下

DATABASES = {                    ‘default‘: {                            ‘ENGINE‘: ‘django.db.backends.mysql‘,  # 修改資料庫引擎,預設為sqlite3文本資料庫                            ‘NAME‘: ‘db_name‘,                            ‘USER‘: ‘**‘,                            ‘PASSWORD‘:‘***‘,                            ‘HOST‘:‘ip‘,                            ‘PORT‘: 3306,     # 注意是數字,不是字串                        }                    }

6、建表   在應用app的目錄下的models.py中寫類【必須繼承models.Model類】

from django.db import models   # 需先匯入models模組class Class(models.Model):    id = models.AutoField(primary_key=True)    name = models.CharField(max_length=20, unique=True)    def __str__(self):        return self.name# 在orm中類      對應資料庫中的       表對象   對應資料庫中的       記錄(資料行)屬性   對應資料庫中的       欄位

7、建好類即表後,執行資料庫遷移命令【讓建立的表在資料庫中產生】

# 記錄models.py中類是不是有變化 將變化的內容記錄下來 python manage.py  makemigrations# 將model的變更同步到資料庫中python  manage.py migrate註:執行第一條命令後models.py中的變化就會在到migrations目錄中建立一個新的檔案並將變化寫入其中
如果在原有表張增加欄位的話,會提示要設定預設值,因為新的那列資料不可為空
七、項目啟動後相關配置  1、更改setting.py 

1.1、檢查項目BASE_DIR是否如下:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

1.2、配置ALLOWED_HOSTS可以運行本項目的ip,‘*‘ 代表所有

ALLOWED_HOSTS = [‘*‘,‘127.0.0.1’,‘192.168.19.66’]
註:如想別人訪問你的網站,需在啟動項目時將ip配置為0.0.0.0,如何將運行項目的ip寫入上面列表,使用者就可以通過你的主機ip訪問你的網站了

1.3、配置INSTALLED_APPS,為建立的應用app進行註冊,不然操作資料庫時報錯

格式:‘app_name.Apps.AppName.Config‘ 或 ‘app_name’

INSTALLED_APPS = [    ‘classModel.apps.ClassmodelConfig‘]    

1.4、配置中介軟體MIDDLEWARE,注釋csrf,讓後台能夠接收所有的post請求,不關閉django將對不合法的post攔截403

將 ‘django.middleware.csrf.CsrfViewMiddleware‘注釋掉,否則會出現下面的情況。

 

 

註:上面的方案,不建議使用,不安全,可以在html檔案中要發送post請求的from表單裡加入{% csrf_token %}就不用注釋上面的csrf的中介軟體了

如:

 

前端實際效果為:

 

 

 

1.5、配置模組templates 中的DIRS需要檢查下是否為空白,如果為空白,添加上os.path.join(BASE_DIR,‘templates‘)

命令建立的項目未建立模板templates目錄,需自己建立。

這是模板中沒有設定,設定模板在python安裝目錄中找到如的路徑,開啟settings.py-tpl,相同位置添加上上os.path.join(BASE_DIR,‘templates‘)。下次建立項目就可不再手動添加。

1.6、settings.py中增加靜態檔案目錄STATICFILES_DIRS【(js,css,image)存放目錄】,這是放在templates中html檔案能夠使用js,css資源的關鍵

在項目根目錄即與manage.py檔案同級下建立靜態檔案夾static,如果有多個就建立多個,但網頁中不論是放在那個檔案中,開始都以/static/開頭

1.7、templates檔案夾下建立/或存放HTML檔案,將html的js,css,imgs等檔案放入images

  2、編輯urls.py檔案,增加映射關係。

 業務函數的實現,業務函數與url的映射可都在此檔案中書寫,以後正常化,可將業務函數移入到應用的views.py中,此檔案僅編輯業務函數與url的映射關係,再匯入views.py中所有的業務函數

from app名 import views

為:直接將視圖函數寫在全域urls.py檔案中

八、訪問web

  1、區域網路中的瀏覽器輸入HTTP://IP:PORT/login 就可訪問驗證。

九、如何完全的刪除一個應用app? 

1.刪除models.py 

  無論是刪除一個單獨的model還是刪除整個App,都需要首先刪除models.py檔案中的模型。

確認沒有其他檔案引用models.py中的類。

遷移或者刪除你的資料庫,Django提供了簡便的方法方便使用者刪除某App下的所有資料(Django 1.7)。

python  manage.py migrate your_app_name zero   

  刪除models.py中的資料模型。

2.刪除App

  再次確認其他App中沒有引用此App的檔案

  刪除整個App檔案夾

  在settings.py的Installed Apps中移除該app

  在urls.py中移除該App相關內容。 

 十、Django快速開發配置小結:

在app的models.py建立類(即資料庫中的表)
在views.py下建立業務視圖函數[匯入orm模組]
  from django.shortcuts import render
  from django.shortcuts import HttpResponse
  from django.shortcuts import redirect
  from classModel import models

在django的templates目錄下建立前端html檔案
在在django的static目錄下存放js,css.images 檔案
在urls.py下建立映射關係
  from classModel import views

Django架構-基礎篇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.