程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Django 表單

編輯:Python
創建Form類時,最重要的部分是定義表單的字段。每個字段都有自定義驗證邏輯,以及一些其他鉤子。本文圍繞可以在表單中使用的各種字段以及與 Django Forms 相關的各種功能和技術展開。表單基本上用於以某種方式從用戶那裡獲取輸入,並將該信息用於數據庫的邏輯操作。例如,通過輸入用戶的姓名、電子郵件、密碼等來注冊用戶。Django 將 Django 表單中定義的字段映射到 HTML 輸入字段。Django 處理表單中涉及的三個不同部分的工作:
  • 准備和重組數據以使其准備好進行渲染
  • 為數據創建 HTML 表單
  • 接收和處理客戶提交的表格和數據



請注意,由 Django 表單完成的所有類型的工作都可以使用高級 HTML 內容完成,但 Django 使它更容易和高效,尤其是驗證部分。一旦你掌握了 Django 表單,你就會忘記 HTML 表單。語法:  Django Fields 像 Django Model Fields 一樣工作,語法如下:
 field_name = forms.FieldType(**options) 
例子:
from django import forms

# creating a form
class GeeksForm(forms.Form):
title = forms.CharField()
description = forms.CharField()

使用 Django 表單

要使用 Django Forms,需要有一個項目和一個在其中工作的應用程序。啟動應用程序後,您可以在 app/forms.py 中創建一個表單。在開始使用表單之前,讓我們檢查一下如何啟動項目並實現 Django Forms。

創建 Django 表單

在 Django 中創建表單與創建模型完全相似,需要指定表單中存在哪些字段以及類型。例如,要輸入注冊表單,可能需要名字 (CharField)、卷號 (IntegerField) 等。 句法: 
from django import forms 
 
class FormName(forms.Form): 
 # 每個字段都將被映射為 HTML 中的輸入字段
 field_name = forms.Field(**options)

創建表單,在 geeks/forms.py 中輸入代碼,
# import the standard Django Forms
# from built-in library
from django import forms

# creating a form
class InputForm(forms.Form):

first_name = forms.CharField(max_length = 200)
last_name = forms.CharField(max_length = 200)
roll_number = forms.IntegerField(
help_text = "Enter 6 digit roll number"
)
password = forms.CharField(widget = forms.PasswordInput())

渲染 Django 表單

Django 表單字段有幾種內置方法可以簡化開發人員的工作,但有時需要手動實現一些東西來自定義用戶界面(UI)。表單帶有 3 個內置方法,可用於呈現 Django 表單字段。 
  • {{ form.as_table }}會將它們呈現為包裹在 <tr> 標簽中的表格單元格
  • {{ form.as_p }}會將它們呈現在 <p> 標簽中
  • {{ form.as_ul }}會將它們呈現在 <li> 標簽中
要將此表單呈現為視圖,請移至 views.py 並創建一個 home_view,如下所示。&nbsp;
from django.shortcuts import render
from .forms import InputForm

# Create your views here.
def home_view(request):
context ={}
context['form']= InputForm()
return render(request, &quot;home.html&quot;, context)

在視圖中,只需在 forms.py 中創建上面創建的表單類的一個實例。現在讓我們編輯模板 > home.html&nbsp;
<form action = &quot;&quot; method = &quot;post&quot;>
{% csrf_token %}
{{form }}
<input type=&quot;submit&quot; value=Submit&quot;>
</form>

現在,訪問http://localhost:8000/


從模型創建 Django 表單

Django ModelForm 是一個用於將模型直接轉換為 Django 表單的類。如果您正在構建一個數據庫驅動的應用程序,那麼您很可能擁有與 Django 模型緊密映射的表單。現在,當我們准備好項目後,在 geeks/models.py 中創建一個模型,
# import the standard Django Model
# from built-in library
from django.db import models

# declare a new model with a name &quot;GeeksModel&quot;
class GeeksModel(models.Model):
# fields of the model
title = models.CharField(max_length = 200)
description = models.TextField()
last_modified = models.DateTimeField(auto_now_add = True)
img = models.ImageField(upload_to = &quot;images/&quot;)

# renames the instances of the model
# with their title name
def __str__(self):
return self.title

要直接為此模型創建表單,請進入 geeks/forms.py 並輸入以下代碼:
# import form class from django
from django import forms

# import GeeksModel from models.py
from .models import GeeksModel

# create a ModelForm
class GeeksForm(forms.ModelForm):
# specify the name of model to use
class Meta:
model = GeeksModel
fields = &quot;__all__&quot;

現在訪問http://127.0.0.1:8000/,&nbsp;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved