1. 程式人生 > 其它 >Django Web開發

Django Web開發

第19章 Django框架web開發

  1. Django是使用Python編寫,基於MVC模式的框架,因為在Django中,控制器接收客戶端請求的角色是由框架自行處理的,所以在Django開發中,更關注的是模型、模板、檢視的MTV模式:

    • 模型(Model),即資料存取層,用於處理與資料相關的相關事務。

    • 模板(Template),即表現層,用於處理與變現相關的決定,例如如何實現頁面顯示。

    • 檢視(View),即業務邏輯層,是模型與模板之間的橋樑,檢視處理使用者請求,僅僅決定展現哪些資料給使用者。

  2. 搭建Django環境

  • 使用包管理工具pip:pip install django
    easy_install django
  1. Django常用命令(終端視窗命令)

    • 新建Django專案:django-admin startproject project_name

    • 新建應用程式:django-admin startapp app_name

    • 同步資料庫:

      python manage.py makemigrations
      python manage.py migrate
      
    • 開發伺服器,該伺服器方便開發和除錯程式:python manage.py runserver 8080(預設埠8000)。

    • 清空資料庫:python manage.py flush

    • 開啟Django環境終端:python manage.py shell

  2. Django中包括model, url, view, template四大模組,分別對應了MVC模式的不同功能。

19.1 實現第一個Django專案

  1. 終端進入根目錄 E:\ 進行指令django-admin startproject firstproject,會看見E盤生成以下目錄。

    • 【manage.py】 一個實用的命令列工具,能以各種方式與該Django專案進行互動。

    • 【_init_.py】 一個空檔案,告訴Python該目錄是一個Python專案。

    • 【settings.py】 該Django專案的配置檔案。

    • 【urls.py】 該Django專案的URL宣告,一份有Django驅動的網站資源目錄。

    • 【wsgi.py】 一個WSGI相容的web伺服器入口,用於執行專案。

    • 【asgi.py】 與ASGI相容的web伺服器為您的專案提供服務的入口點。

  2. 終端進入【firstproject】專案目錄,執行python manage.py startapp learn 新建應用【learn】,會看見出現以下子目錄。

  3. 在配置檔案【settings.py】中找到 INSTALLED_APPS 新增以下程式碼,註冊新建的應用,這樣Python可以自動找到模板檔案和靜態檔案。

  4. 在應用目錄【learn】中開啟檢視檔案【views.py】編寫檢視函式,用於顯示訪問頁面時的內容。

    #-*- coding: utf-8 -*-
    from django.http import HttpResponse     # 引入http響應訊息物件
    def index(request):                      # 第一個引數必須是request物件,用於接收處理請求。
        return HttpResponse(u"歡迎光臨,這裡是第一個Django專案應用!")
    
  5. 開啟【urls.py】檔案,新增下列程式碼,建立url對映,關聯這個檢視函式。

  6. 終端執行 python manage.py runserver 執行測試伺服器,預設埠8000,開啟瀏覽器訪問localhost:8000,成功訪問了專案應用。

19.2 URL路徑對映和傳參

  1. Django專案中的URL模組和view模組對應的是MVC模式中的controller。檢視是伺服器收到使用者請求後,展示返回的內容,而當伺服器收到請求後,Django會根據專案下的【urls.py】檔案中的路徑對映,去相應的檢視模組查詢處理函式,再返回頁面資料給客戶端。

  2. 兩個傳參方法:

    • path() :實現路徑對映和正常引數傳遞,格式:<型別:變數名>或<變數名>。

    • re_path() :實現正則表示式的路徑對映和引數傳遞,格式:(?P<變數名>表示式)。

    • 例如將一個專案【blog】的【urls.py】檔案中如下設定:

      from django.contrib import admin
      from django.urls import path, re_path
      from blog_app import views
      urlpatterns = [
          # 使用普通路徑對映和引數傳遞。
          path("blog/article/<int:id>/", views.article, name="article"),
          # 使用正則表示式路徑對映和引數傳遞。
          re_path(r"^blog/article/(?P<id>\d+)/$", views.article, name="article"),
          path("admin/", admin.site.urls),
      ]
      
  3. 設定路徑對映時,可以將路徑命名一個別名,相當於給URL命名一個全域性變數,在網頁模板中使用較為方便,如:

    //使用url別名作錨鏈接
    <a href="{% url "article" id %}">文字</a>
    //使用普通url作錨鏈接
    <a href="blog/article/id">文字</a>
    
  4. url別名只能在網頁模板中使用,而不能在 view中使用,因此要用 reverse() 方法轉化成普通url在 view中使用。

    from django.urls import reverse
    url = reverse("blog:article",args=[id])  # 專案名blog可作為名稱空間。
    
  5. urls模組的path方法目前不能指向一個基於類的檢視,Django的解決辦法是提供一個as_visw()方法將一個類偽裝成方法。

    from django.contrib import admin
    from django.urls import path
    from blog_app import views
    urlpatterns = [
        path("", views.ArticleClass.as_view(), name = "article_class"),
        path("admin/", admin.site.urls),
    ]
    
  6. 在配置url路徑對映時,可以設定自定義傳入額外的引數:

    from django.contrib import admin
    from django.urls import path
    from blog_app import views
    urlpatterns = [
        path("blog/article/<int:id>/", views.article, name = "article", {"bg":"black","display":3}),
        path("admin/", admin.site.urls),
    ]
    

19.3 view檢視

  1. Django框架中,檢視view通常和url路由一起工作,當伺服器收到客戶端請求後,會根據在【urls.py】檔案中的路徑對映,去檢視中查詢相應的處理函式,在返回http網頁資訊。

  2. 實際web開發中,view模組不僅要負責從資料庫提取資料,而且需要設定用於顯示內容的模板,並提供模板渲染頁面所需的內容物件。

  3. render(request, template_path, context_obj, content_type)方法:用於轉發請求給模板,並返回模板內容。

  4. get_object_or _404():預設呼叫Django的get方法,如果請求的資源不存在,則丟擲http404狀態。

  5. 專案示例待完善。。