天天看點

Django學習筆記2023-7-15使用表單

作者:不易9093

使用表單

官方位址:https://docs.djangoproject.com/zh-hans/4.1/topics/forms/

這個頁面是Django官方文檔中關于表單的介紹部分。表單是一種用于收集使用者輸入資料的HTML表單,通常包含文本框、下拉清單、單選按鈕等控件。

在Django 4中,你可以使用以下類和方法來處理表單:

  1. forms.Form:這是一個基類,用于建立自定義表單類。你可以繼承這個類并添加自己的字段和驗證規則。
  2. forms.ModelForm:這是一個特殊的表單類,用于從資料庫模型自動生成表單。你可以将這個類用作資料導入或導出的工具。
  3. forms.formset_factory:這個函數用于建立一個表單集(formset),它允許你在一個頁面上顯示多個相同類型的表單。
  4. form.is_valid():這個方法用于檢查表單是否通過所有驗證規則。如果表單有效,它将傳回True,否則傳回False。
  5. form.cleaned_data:這個屬性包含了表單中所有已清理的資料,即已經通過驗證的資料。

要學習和應用表單,你可以參考Django官方文檔中的教程和示例代碼。例如,要建立一個簡單的系統資料庫單,你可以按照以下步驟操作:

  1. 在你的Django項目中建立一個新的應用,例如叫做myapp。
  2. 在myapp目錄下建立一個名為forms.py的檔案,并在其中編寫以下代碼:
from django import forms

class RegistrationForm(forms.Form):
    username = forms.CharField(max_length=100)
    email = forms.EmailField()
    password = forms.CharField(widget=forms.PasswordInput)           

這個表單類定義了三個字段:使用者名、電子郵件和密碼。其中,密碼字段使用了密碼輸入控件來保護使用者的隐私。

  1. 在myapp目錄下建立一個名為views.py的檔案,并在其中編寫以下代碼:
from django.shortcuts import render, redirect
from .forms import RegistrationForm

def register(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            # 這裡可以儲存使用者資訊到資料庫中
            return redirect('home')
    else:
        form = RegistrationForm()
    return render(request, 'register.html', {'form': form})           

這個視圖函數會處理使用者送出的系統資料庫單,驗證表單資料是否有效,如果有效則儲存使用者資訊到資料庫中并重定向到首頁。如果表單無效,則重新渲染表單頁面。

  1. 在myapp目錄下建立一個名為templates的目錄,并在其中建立一個名為register.html的檔案,并在其中編寫以下代碼:
{% extends "base.html" %}

{% block content %}
  <h2>Register</h2>
  <form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Register</button>
  </form>
{% endblock %}           

這個模闆檔案定義了一個簡單的系統資料庫單,包含使用者名、電子郵件和密碼三個字段以及一個送出按鈕。使用{{ form.as_p }}可以将表單渲染為一組帶有标簽和錯誤資訊的段落。

  1. 在項目的主urls.py檔案中,将新建立的視圖函數添加到URL配置中:
from django.urls import path
from myapp.views import register

urlpatterns = [
    # ...
    path('register/', register, name='register'),
    # ...
]           
Django學習筆記2023-7-15使用表單
Django學習筆記2023-7-15使用表單

對Django4的表單進行翻譯:

表單

Django的表單是用于建立HTML表單的強大工具。它們允許我們從使用者那裡收集資料,并将其發送到伺服器進行處理。

表單的基礎

在Django中建立表單的最簡單方法是使用Form類。通過繼承Form類并定義表單字段,我們可以定義一個自定義的表單。

以下是一個簡單的表單示例:

from django import forms

class MyForm(forms.Form):
    name = forms.CharField(max_length=100)
    email = forms.EmailField()
    message = forms.CharField(widget=forms.Textarea)           

在上面的示例中,我們建立了一個名為MyForm的表單,并定義了三個字段:name、email和message。每個字段都是一個執行個體化的表單字段類,它們具有不同的屬性,如max_length和widget。

我們可以在視圖函數中使用這個表單,并将它渲染為HTML表單:

from django.shortcuts import render

def my_view(request):
    form = MyForm()
    return render(request, 'my_template.html', {'form': form})           

在上面的代碼中,我們執行個體化了MyForm類,并将其傳遞給模闆,以便在HTML頁面中渲染表單。

表單的驗證

Django的表單不僅可以用于渲染HTML表單,還可以用于驗證使用者輸入的資料。在表單執行個體上調用is_valid()方法可以驗證使用者送出的資料是否有效。

以下是一個驗證表單的示例:

def my_view(request):
    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            # 處理有效的表單資料
            name = form.cleaned_data['name']
            email = form.cleaned_data['email']
            message = form.cleaned_data['message']
            # 進一步處理資料...
    else:
        form = MyForm()
    return render(request, 'my_template.html', {'form': form})           

在上面的示例中,我們首先檢查請求的方法是否為POST。如果是POST請求,我們執行個體化MyForm類,并将使用者送出的資料作為參數傳遞給表單。然後我們調用is_valid()方法來驗證表單資料。如果表單資料有效,我們可以通過cleaned_data屬性通路經過清洗的資料。

表單的渲染

Django的表單可以自動渲染為HTML表單元素。在模闆中,我們可以使用{{ form }}模闆變量來渲染整個表單,或者使用{{ form.field_name }}來渲染單個字段。

以下是一個使用Django模闆渲染表單的示例:

<form method="POST">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">送出</button>
</form>           

在上面的示例中,我們使用{{ form.as_p }}來渲染整個表單。這将以段落的形式渲染每個字段,并自動包含CSRF令牌。

類、函數和方法

Django的表單庫提供了許多類、函數和方法,用于建立、處理和驗證表單。以下是一些常用的類、函數和方法:

  • Form類:用于建立自定義表單的基類。
  • CharField類:用于建立文本輸入字段。
  • EmailField類:用于建立電子郵件輸入字段。
  • TextArea類:用于建立多行文本輸入字段。
  • cleaned_data屬性:用于通路經過清洗的表單資料。
  • is_valid()方法:用于驗證表單資料是否有效。
  • render()函數:用于渲染表單為HTML元素。

以上隻是一些基本的類、函數和方法,Django的表單庫還提供了許多其他功能和選項,可以根據需要進行學習和應用。

希望這個簡單的介紹能幫助你了解和使用Django4中的表單。通過繼續學習和實踐,你将能夠更好地掌握表單的使用,并在實際項目中應用它們。

Django學習筆記2023-7-15使用表單
Django學習筆記2023-7-15使用表單

繼續閱讀