Django框架學習——1—(虛擬環境搭建、MVC思想與Django的MVT區別、Django項目的創建、運行Django項目、項目結構介紹)

1、虛擬環境搭建

創建新的Django框架的虛擬環境:

注意:如果沒有pipenv指令,需要安裝這個支持庫,同時需要記住配置它的環境變量,否則虛擬環境會安裝在默認文件夾下(一般是C:\Users\Administrator.virtualenvs)

# Windows安裝pipenv

pip install pipenv

pipenv shell    # 進入虛擬環境
exit            # 退出虛擬環境
pipenv --rm     # 刪除整個環境  不會刪除pipfile

在這裏插入圖片描述
Window系統安裝Django 2.2(注意要在虛擬環境下)

# Window系統安裝Django 2.2

在這裏插入圖片描述
在這裏插入圖片描述
pycharm設置python解釋器
在這裏插入圖片描述

2、MVC思想與Django的MVT區別

在這裏插入圖片描述
在Django框架中,將Controller改換成Templates模板,就成了MVT,但是在Django中的View視圖負責的功能就是MVC思想中Controller的功能。
在這裏插入圖片描述

3、Django項目的創建

1. 命令行創建

推薦使用命令行創建項目的方法

# 進入虛擬環境,xxx是自己創建的虛擬環境文件夾
cd /d xxx
pipenv shell

# 查看虛擬環境python的版本,需要是3.6的
python

# 創建項目:打開終端,使用命令:
django-admin startproject [項目名稱] 

比如:django-admin startproject first_project。

注意:項目名稱注意儘量不要有中文,項目路徑也儘量不要有。
在這裏插入圖片描述

2. Pycharm專業版創建Django

需要使用Pycharm Professional版本的,社區版本無法創建。

Pycharm專業版本激活方法參考:https://shimo.im/docs/DJ3h3tJv98ppTYyH/read
在這裏插入圖片描述

4、運行Django項目

1. 命令行運行項目

# 啓動Django項目
python manage.py runserver

# 如果想要在項目啓動的時候指定端口,可以執行
python manage.py runserver 8888
# 此時就可以使用http://127.0.0.1:8888/ 端口進行訪問Django

在這裏插入圖片描述
上圖中有紅色部分提醒信息是因爲有些Django默認的信息我們還沒更改,比如admin, auth, contenttypes, sessions.
在這裏插入圖片描述
運行成功顯示界面效果:Django默認開啓Debug模式,此時版本爲2.2.

在這裏插入圖片描述
且Django默認自帶後臺
在這裏插入圖片描述

2. Pycharm啓動項目

1.選擇Edit Configurations選擇項
在這裏插入圖片描述
2.添加 runserver 參數
在這裏插入圖片描述
3.在manage.py文件中右鍵選擇Run manage,項目啓動成功如下:
在這裏插入圖片描述

5、項目結構介紹

以下是Django項目固定的設置,不同於Flask框架。

  • manage.py:和項目交互基本上都是基於這個文件。一般都是在終端輸入python manage.py [子命令]
    可以輸入python manage.py help看下能做什麼事情。除非你知道你自己在做什麼,一般情況下不應該編輯這個文件。
  • settings.py:本項目的設置項,以後所有和項目相關的配置都是放在這個裏面。Flask框架中是人爲定義的config.py文件。
  • urls.py:這個文件是用來配置URL路由的。比如訪問http://127.0.0.1/news/是訪問新聞列表頁,這些東西就需要在這個文件中完成。Flask框架中是通過route的裝飾器去配置路由,或者類視圖綁定路由。
  • wsgi.py:項目與WSGI協議兼容的web服務器入口,服務器部署的時候需要用到的,一般情況下也是不需要修改的。

1. project和app的關係

app是django項目的組成部分。一個app代表項目中的一個模塊,所有URL請求的響應都是由app來處理。比如豆瓣,裏面有圖書,電影,音樂,同城等許許多多的模塊,如果站在django的角度來看,圖書,電影這些模塊就是app,圖書,電影這些app共同組成豆瓣這個項目。因此這裏要有一個概念: django項目由許多app組成,一個app可以被用到其他項目,django也能擁有不同的app
項目要求:高內聚低耦合,兩個獨立模塊的聯繫越少越好。

2. 創建app

python manage.py startapp [app名稱]

在這裏插入圖片描述
app中的文件

  • init.py 說明目錄是一個Python模塊
  • models.py 寫和數據庫相關的內容
  • views.py 接收請求,處理數據 與M和T進行交互
  • tests.py 寫測試代碼的文件(暫時不需要關心)
  • admin.py 網站後臺管理相關的

應用註冊
建立應用和項目之間的聯繫,需要對應用進行註冊。
修改 settings.py中的INSTALLED_APPS配置項

測試代碼:
utls.py文件定義和綁定不同的路由,這種方法和路由都在一起,後期會造成項目的代碼文件臃腫。

from django.contrib import admin
from django.urls import path
from django.http import HttpResponse


# django框架中寫視圖函數,必須要傳參request
def index(request):
    return HttpResponse("hello world")       # 返回值必須是 HttpResponse包裹住的類型


# django框架中寫視圖函數,必須要傳參request
def book(request):
    return HttpResponse("圖書首頁")           # 返回值必須是 HttpResponse包裹住的類型


urlpatterns = [
    path('admin/', admin.site.urls),         # django默認路由前面有/,不需要添加
    path('', index),                         # 路由爲/,綁定的方法是index,此時不能加()
    path('book/', book),                     # 路由爲book/,綁定的方法是book

]

3. 項目中真正的定義和綁定路由的方式

book/views.py 文件中定義路由的方法

from django.shortcuts import render

# Create your views here.

from django.http import HttpResponse


# django框架中寫視圖函數,必須要傳參request
def book(request):
    return HttpResponse("圖書首頁")           # 返回值必須是 HttpResponse包裹住的類型


# django框架中寫視圖函數,必須要傳參request
def index(request):
    return HttpResponse("hello world")       # 返回值必須是 HttpResponse包裹住的類型



utls.py文件綁定不同的路由

from django.contrib import admin
from django.urls import path
from django.http import HttpResponse
from book.views import book             # 從其他app模塊中導入定義的路由方法
from book.views import index


urlpatterns = [
    path('admin/', admin.site.urls),         # django默認路由前面有/,不需要添加
    path('', index),                         # 路由爲/,綁定的方法是book模塊中views.py的index方法
    path('book/', book),                     # 路由爲book/,綁定的方法是book模塊中views.py的index方法

]

4. DEBUG模式

• 開啓了debug模式,那麼修改代碼,然後按下ctrl+s,那麼Django會自動重啓項目
• Django項目中代碼出現了問題,在瀏覽器中和控制檯中會打印錯誤信息
• 如果項目上線了,關閉debug模式,不然有很大的安全隱患,因爲項目錯誤信息會顯示在頁面上,不安全
• 關閉DEBUG模式,在setting文件中,將DEBUG = False
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章