1. 程式人生 > 程式設計 >Django 構建模板form表單的兩種方法

Django 構建模板form表單的兩種方法

通常情況下,我們想構建一張表單時會在模板檔案login.html中寫入

<form action="/your-name/" method="post">
 <label for="your_name">Your name: </label>
 <input id="your_name" type="text" name="your_name" value="{{ current_name }}">
 <input type="submit" value="OK">
</form>

下面說說我們在使用django是如何在模板檔案中生成form表單:

1、自定義顯示的欄位:

假如我們要在模板中生成一張含有username和content的表單

在app下新建forms.py(/users/forms.py)

from django import forms

class MessageGetForm(forms.Form):
 username = forms.CharField(label='使用者',max_length=5) #max_length 瀏覽器限制使用者輸入的字串長度
 content = forms.CharField(label='留言',max_length=100)

在檢視檔案中引用上邊表單欄位並傳遞給模板(users/view.py)

from apps.users.forms import MessageGetForm

class MessageView(View):
 def get(self,request,*args,**kwargs):
  message = MessageGetForm()

  return render(request,"message.html",{"message": message})

在模板檔案呼叫(message.html)

<form action="" method="get"> 
 {{ message }}
</form>

渲染後的頁面效果

Django 構建模板form表單的兩種方法

2、將資料表的欄位對映到模板檔案form表單

資料表courses_lesson欄位如下

Django 構建模板form表單的兩種方法

在app下新建forms.py(/users/forms.py)

#此處我們假設你的專案檔案courses/models.py內含有Lesson類from apps.courses.models import Lesson
from django.forms import ModelForm

class CoursesLessonForm(ModelForm):
 class Meta:
  model = Lesson
  fields = ['add_time','name','learn_times'] #要顯示的欄位

在檢視檔案中引用上邊表單欄位並傳遞給模板(users/view.py)

from apps.users.forms import CoursesLessonForm

class MessageView(View):
 def get(self,**kwargs):
  message = CoursesLessonForm()

  return render(request,{"message": message})

在模板檔案呼叫(message.html)

<form action="" method="get">
 {{ message }}
</form>

頁面效果圖:

Django 構建模板form表單的兩種方法

所有表單類都作為 django.forms.Form 或者 django.forms.ModelForm 的子類來建立。您可以把 ModelForm 想象成 Form 的子類。實際上 FormModelForm 從(私有) BaseForm 類繼承了通用功能,但是這個實現細節不怎麼重要。

到此這篇關於Django 構建模板form表單的兩種方法的文章就介紹到這了,更多相關Django 構建模板form表單的兩種方法內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!