{{ form.as_table }} – 將Django表單渲染為表格


在Web開發領域,Django已經成為一個著名的、開源的、高階的Python Web框架,它鼓勵快速開發和簡潔實用的設計。Django擁有強大的表單處理機制,允許開發者輕鬆建立、驗證和處理表單。Django表單處理機制的一個重要組成部分是它將表單渲染為HTML表格的能力。

在這篇文章中,我們將介紹將Django表單渲染為表格的過程,包括好處、如何實現以及一些最佳實踐。閱讀完這篇文章後,您將掌握如何透過有效地將Django表單渲染為表格來簡化您的Web開發流程。

為什麼要將Django表單渲染為表格?

將Django表單渲染為表格可以為Web開發者帶來諸多好處。其中一些優勢包括:

  • 結構化佈局:在表格中顯示錶單元素可以提供清晰簡潔的佈局,使使用者更容易理解和操作表單。

  • 自適應佈局:使用正確的CSS,表格可以輕鬆適應不同的螢幕尺寸和裝置,確保在多種裝置上的一致使用者體驗。

  • 改進的可維護性:透過將表單渲染為表格,程式設計師可以減少需要編寫的HTML和CSS程式碼量,從而更容易維護和更新表單。

  • 可訪問性:使用表格渲染表單可以提高殘疾使用者的可訪問性,因為螢幕閱讀器可以更好地解釋表單以及表單元素之間的關係。

如何將Django表單渲染為表格

現在我們已經瞭解了將Django表單渲染為表格的好處,讓我們來探討實現這一目標的步驟。

需要安裝的包

安裝Django:開啟您的終端,輸入以下命令安裝Django:

pip install django

建立一個新的Django專案:仍在您的終端中,輸入以下命令建立一個新的Django專案:

django−admin startproject myproject

導航到您的專案目錄

cd myproject

建立一個新的Django應用

python manage.py startapp myapp

在Myapp目錄中建立一個新的檔案forms.py

首先,我們需要建立一個Django表單。這可以透過在您的forms.py檔案中定義一個表單類來實現,該類繼承自django.forms.ModelForm或django.forms.Form。

  • 匯入基本模組:來自django包的forms以及當前app的models.py檔案的User模型。

  • 建立一個名為UserForm的表單類,該類繼承自forms.ModelForm。

  • 在UserForm類中,建立一個巢狀的Meta類。

  • 將Meta類的model屬性設定為User模型。這告訴Django該表單將用於建立或編輯User例項。

  • 在Meta類的fields屬性中建立一個欄位名稱列表。這些是將包含在表單中的欄位。

from django import forms
from .models import User

class UserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ['first_name', 'last_name', 'roll_no', 'password']

更新Myapp目錄中的views.py

這段程式碼從forms匯入UserForm,並在user_form_view函式中使用它,該函式在'form.html'中渲染表單。

from django.shortcuts import render
from .forms import UserForm

def user_form_view(request):
    form = UserForm()
    return render(request, 'form.html', {'form': form})

在myapp目錄中建立一個新的目錄templates,並在templates目錄中建立一個新的檔案form.html

接下來,我們將使用Django內建的方法將表單渲染為表格——as_table方法。在您的模板中,您將像下面這樣在表單例項上呼叫as_table方法:

  • 建立一個HTML表單元素,其屬性method="POST"表示表單在提交資料時將使用POST方法。

  • 使用{% csrf_token %}模板標籤在表單中包含一個CSRF令牌,這有助於防止跨站請求偽造攻擊。

  • 建立一個HTML表格元素。

  • 在表格元素內,使用{{ form.as_table }}模板標籤將Django表單渲染為表格。這將生成每個表單欄位所需的HTML,每個欄位都顯示在自己的表格行中。

  • 新增一個HTML輸入元素,其屬性type="submit"用於表單的提交按鈕。

<form method="POST">
  {% csrf_token %}
  <table class="form-table" style="width: 100%;">
    {{ form.as_table }}
  </table>
  <input type="submit" value="Submit">
</form>

更新myapp目錄中的urls.py

此程式碼片段正在為Django應用程式myapp建立URL路由。它為使用者表單檢視定義了一個指向基本URL的路徑。

from django.urls import path
from .views import user_form_view

urlpatterns = [
    path('', user_form_view, name='user_form'),
]

更新Myproject目錄中的urls.py

此程式碼正在為Django專案myproject設定主要的URL配置。它包括管理站點和myapp應用程式的URL配置。

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

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

執行伺服器

python manage.py runserver

現在,如果您在Web瀏覽器中導航到http://127.0.0.1:8000/,您應該會看到您的表單。這是您的Django應用程式的“輸出”。

輸出

我們成功了!我們的Django表單已成功渲染為表格。這是最終的使用者登錄檔單,優雅地顯示了四個欄位。

Django中的Web應用程式由多個相互關聯的部分組成,不可能將其壓縮成單個獨立的Python指令碼,您可以在控制檯中執行該指令碼以獲得輸出。

將Django表單渲染為表格的最佳實踐

為了確保最佳的使用者體驗和可維護性,在將Django表單渲染為表格時,請遵循以下最佳實踐:

  • 使用語義標記:使用合適的表格元素,例如thead、tbody和tfoot,以提供更好的結構和提高可訪問性。

  • 新增名稱和佔位符:確保為每個表單欄位包含名稱以及佔位符,以指導使用者完成表單填寫過程。

  • 應用響應式設計:使用CSS媒體查詢或提供響應式表格類的CSS框架(如Bootstrap)來確保您的表格具有響應性。

  • 實現CSRF保護:透過在表單元素中包含{% csrf_token %}模板標籤來保護您的表單免受跨站請求偽造(CSRF)攻擊。使用此標籤時,Django將自動處理CSRF保護。

結論

將Django表單渲染為表格具有多種好處,包括組織良好的格式、響應式設計、改進的可維護性和增強的可訪問性。透過遵循本文中概述的步驟和最佳實踐,您將能夠使用Django建立簡化、使用者友好且高效的Web應用程式。

在您繼續提升Django技能的過程中,請記住及時瞭解最新的最佳實踐、工具和技術,以確保您的專案始終高效、安全且使用者友好。

更新於:2023年7月10日

瀏覽量:1000+

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.