1. 程式人生 > 實用技巧 >Django入門實戰一

Django入門實戰一

前言

Django是高水準的Python程式語言驅動的一個開源模型.檢視,控制器風格的Web應用程式框架,它起源於開源社群。使用這種架構,程式設計師可以方便、快捷地建立高品質、易維護、資料庫驅動的應用程式

安裝

首先需要安裝python3,python安裝教程太簡單了,這裡就不具體說了。

pip install django==3.1

建立

建立一個專案包

django-admin startproject mysite

生成以下目錄:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

這些目錄和檔案的用處是:

  • 最外層的 mysite/ 根目錄只是你專案的容器, 根目錄名稱對Django沒有影響,你可以將它重新命名為任何你喜歡的名稱。

  • manage.py: 一個讓你用各種方式管理 Django 專案的命令列工具。你可以閱讀 django-admin and manage.py 獲取所有 manage.py 的細節。

  • 裡面一層的 mysite/ 目錄包含你的專案,它是一個純 Python 包。它的名字就是當你引用它內部任何東西時需要用到的 Python 包名。 (比如 mysite.urls).

  • mysite/init.py:一個空檔案,告訴 Python 這個目錄應該被認為是一個 Python 包。如果你是 Python 初學者,閱讀官方文件中的 更多關於包的知識。

  • mysite/settings.py:Django 專案的配置檔案。

  • mysite/urls.py:Django 專案的 URL 宣告,就像你網站的“目錄”。

  • mysite/asgi.py:作為你的專案的執行在 ASGI 相容的Web伺服器上的入口。

  • mysite/wsgi.py:作為你的專案的執行在 WSGI 相容的Web伺服器上的入口。

執行檢查

cd mysite
python manage.py runserver

現在,伺服器正在執行,瀏覽器訪問 https://127.0.0.1:8000/ 你將會看到一個“祝賀”頁面,隨著一隻火箭發射,伺服器已經運行了。


也可以指定不同的IP和埠執行

py manage.py runserver 0:8000

建立應用

現在你的開發環境——這個“專案” ——已經配置好了,你可以開始幹活了。
在 Django 中,每一個應用都是一個 Python 包,並且遵循著相同的約定。Django 自帶一個工具,可以幫你生成應用的基礎目錄結構,這樣你就能專心寫程式碼,而不是建立目錄了。

python manage.py startapp polls

這會建立一個polls的目錄,目錄結構如下:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

編碼開始

讓我們開始編寫第一個檢視吧。開啟 polls/views.py,把下面這些 Python 程式碼輸入進去:

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. This is django!")

這是 Django 中最簡單的檢視。如果想看見效果,我們需要將一個 URL 對映到它——這就是我們需要 URLconf 的原因了。
為了建立 URLconf,請在 polls 目錄裡新建一個 urls.py 檔案。你的應用目錄現在看起來應該是這樣:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py

在 polls/urls.py 中,輸入如下程式碼:

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

下一步是要在根 URLconf 檔案中指定我們建立的 polls.urls 模組。在 mysite/urls.py 檔案的 urlpatterns 列表裡插入一個 include(), 如下:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

函式 include() 允許引用其它 URLconfs。每當 Django 遇到 include() 時,它會截斷與此項匹配的 URL 的部分,並將剩餘的字串傳送到 URLconf 以供進一步處理。

我們設計 include() 的理念是使其可以即插即用。因為投票應用有它自己的 URLconf( polls/urls.py ),他們能夠被放在 "/polls/" , "/fun_polls/" ,"/content/polls/",或者其他任何路徑下,這個應用都能夠正常工作。

你現在把 index 檢視新增進了 URLconf。通過以下命令驗證是否正常工作:

python manage.py runserver

用你的瀏覽器訪問 http://localhost:8000/polls/,你應該能夠看見 "Hello, world. You're at the polls index." ,這是你在 index 檢視中定義的。

如果你訪問的地址還是 http://localhost:8000/ 會提示下面錯誤,因為當前頁面已經不存在映射了

函式 path() 具有四個引數,兩個必須引數:route 和 view,兩個可選引數:kwargs 和 name。現在,是時候來研究這些引數的含義了。

  • path() 引數: route

route 是一個匹配 URL 的準則(類似正則表示式)。當 Django 響應一個請求時,它會從 urlpatterns 的第一項開始,按順序依次匹配列表中的項,直到找到匹配的項。
這些準則不會匹配 GET 和 POST 引數或域名。例如,URLconf 在處理請求 https://www.example.com/myapp/ 時,它會嘗試匹配 myapp/ 。處理請求 https://www.example.com/myapp/?page=3 時,也只會嘗試匹配 myapp/。

  • path() 引數: view

當 Django 找到了一個匹配的準則,就會呼叫這個特定的檢視函式,並傳入一個 HttpRequest 物件作為第一個引數,被“捕獲”的引數以關鍵字引數的形式傳入。

  • path() 引數: kwargs

任意個關鍵字引數可以作為一個字典傳遞給目標檢視函式。

  • path() 引數: name

為你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。這個有用的特性允許你只改一個檔案就能全域性地修改某個 URL 模式。