django - MTV

MTV模型

Django的MTV分別代表:

  • Model(模型):負責業(yè)務對象與數(shù)據(jù)庫的對象(ORM)
  • Template(模版):負責如何把頁面展示給用戶
  • View(視圖):負責業(yè)務邏輯,并在適當?shù)臅r候調用Model和Template

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

image.png

django基本命令

下載Django:
  pip install django

創(chuàng)建一個django項目:
  django-admin.py startproject 項目名

創(chuàng)建應用:
  python manage.py startapp 應用名

啟動項目:
  python manage.py runserver 8080

同步更改數(shù)據(jù)庫表或字段
  python manage.py syncdb
  注意:Django 1.7.1 及以上的版本需要用以下命令
    python manage.py makemigrations
    python manage.py migrate

清空數(shù)據(jù)庫
  python manage.py flush

創(chuàng)建超級管理員
  python manage.py createsuperuser
  # 按照提示輸入用戶名和對應的密碼就好了郵箱可以留空,用戶名和密碼必填

修改 用戶密碼可以用:
  python manage.py changepassword username

Django 項目環(huán)境終端
  python manage.py dbshell
  Django 會自動進入在settings.py中設置的數(shù)據(jù)庫,如果是 MySQL 或 postgreSQL,會要求輸入數(shù)據(jù)庫用戶密碼。
  在這個終端可以執(zhí)行數(shù)據(jù)庫的SQL語句。如果您對SQL比較熟悉,可能喜歡這種方式。

更多命令
  python manage.py
  查看所有的命令,忘記子名稱的時候特別有用。

靜態(tài)文件配置

概述:

靜態(tài)文件交由Web服務器處理,Django本身不處理靜態(tài)文件。簡單的處理邏輯如下(以nginx為例):
URI請求-----> 按照Web服務器里面的配置規(guī)則先處理,以nginx為例,主要求配置在nginx.
                             conf里的location

                         |---------->如果是靜態(tài)文件,則由nginx直接處理

                         |---------->如果不是則交由Django處理,Django根據(jù)urls.py里面的規(guī)則進行匹配

    以上是部署到Web服務器后的處理方式,為了便于開發(fā),Django提供了在開發(fā)環(huán)境的對靜態(tài)文件的處理機制,方法是這樣:

static配置:

STATIC主要指的是如css,js,images這樣文件:

STATIC_URL = '/static/'      # 別名
STATICFILES_DIRS = (
            os.path.join(BASE_DIR,"static"),  #實際名 ,即實際文件夾的名字
        )

'''

注意點1:
 django對引用名和實際名進行映射,引用時,只能按照引用名來,不能按實際名去找
        <script src="/statics/jquery-3.1.1.js"></script>
        ------error-----不能直接用,必須用STATIC_URL = '/static/':
        <script src="/static/jquery-3.1.1.js"></script>

注意點2:
 STATICFILES_DIRS = (
    ("app01",os.path.join(BASE_DIR, "app01/statics")),
        )

 <script src="/static/app01/jquery.js"></script>

'''

media配置:

# in settings:

MEDIA_URL="/media/"
MEDIA_ROOT=os.path.join(BASE_DIR,"app01","media","upload")

# in urls:
from django.views.static import serve
url(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
        '''
        靜態(tài)文件的處理又包括STATIC和MEDIA兩類,這往往容易混淆,在Django里面是這樣定義的:
        
        MEDIA:指用戶上傳的文件,比如在Model里面的FileFIeld,ImageField上傳的文件。如果你定義
        
        MEDIA_ROOT=c:\temp\media,那么File=models.FileField(upload_to="abc/")#,上傳的文件就會被保存到c:\temp\media\abc

        eg:
            class blog(models.Model):
                   Title=models.charField(max_length=64)
                   Photo=models.ImageField(upload_to="photo")
          上傳的圖片就上傳到c:\temp\media\photo,而在模板中要顯示該文件,則在這樣寫
          在settings里面設置的MEDIA_ROOT必須是本地路徑的絕對路徑,一般是這樣寫:
                 BASE_DIR= os.path.abspath(os.path.dirname(__file__))
                 MEDIA_ROOT=os.path.join(BASE_DIR,'media/').replace('\\','/')

        MEDIA_URL是指從瀏覽器訪問時的地址前綴,舉個例子:
            MEDIA_ROOT=c:\temp\media\photo
            MEDIA_URL="/data/"
        在開發(fā)階段,media的處理由django處理:

           訪問http://localhost/data/abc/a.png就是訪問c:\temp\media\photo\abc\a.png

           在模板里面這樣寫![](/media/abc/a.png)

           在部署階段最大的不同在于你必須讓web服務器來處理media文件,因此你必須在web服務器中配置,
           以便能讓web服務器能訪問media文件
           以nginx為例,可以在nginx.conf里面這樣:

                 location ~/media/{
                       root/temp/
                       break;
                    }

           具體可以參考如何在nginx部署django的資料。
           
           
           '''
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • MTV模型 Django的MTV分別代表: Model(模型):負責業(yè)務對象與數(shù)據(jù)庫的對象(ORM) Templa...
    lkning閱讀 957評論 0 0
  • 從著名的MVC模式說起 所謂MVC就是把Web應用分為模型(M),控制器(C)和視圖(V)三層,他們之間以一種插件...
    Spareribs閱讀 1,185評論 0 5
  • epub格式下載 感謝@Cluas 鏈接: https://pan.baidu.com/s/1kVGavLd 密碼...
    夜夜月閱讀 58,344評論 106 380
  • django中MTV模式即MVC模式 M:負責業(yè)務對象和數(shù)據(jù)庫的關系映射(ORM)T:負責如何把頁面展示給用戶(h...
    ImFx閱讀 425評論 0 0
  • Model 提供數(shù)據(jù)訪問接口和模塊,包括數(shù)據(jù)字段,元數(shù)據(jù),數(shù)據(jù)關系等的定義及操作. Templates 是一套Dj...
    Co_zy閱讀 677評論 0 0

友情鏈接更多精彩內(nèi)容