Django 中的表单小组件


在本文中,我们将了解如何在 Django 表单中使用小组件。小组件对于改进前端非常有帮助。小组件是 Django 表单呈现的 html 元素,文本框、输入框、密码输入框等,都是小组件。

首先,让我们创建一个 Django 项目和一个应用程序。我使用名称“tutorial14”创建了该项目,并使用名称“djangoFormWidget”创建了该应用程序。

settings.py中添加应用程序,并在项目的urls.py中包含应用程序的 URL。

创建所有基本文件和文件夹,如 Templates、home.html、forms.py。

示例

在应用程序的urls.py中 −

from django.urls import path,include
from . import views
urlpatterns = [
   path('',views.home,name="home")
]

它将创建一个用于呈现视图的基本 URL。

views.py中 −

from django.shortcuts import render
from .forms import CommentForm

# Create your views here.
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def home(request):
   if request.method=='POST':
      form=CommentForm(request.POST)
      if form.is_valid():
         form.save()
   commentform=CommentForm()
   return render(request,'home.html',{"commentform":commentform})

在此,我们导入了表单并处理了其 POST 和 GET 请求。

在 POST 中,我们保存数据,在 GET 中,我们向前端发送表单。

models.py中 −

from django.db import models

# Create your models here.
class CommentModel(models.Model):
   comment=models.CharField(max_length=500)

在此,我们创建了将在表单中使用的模型。我们需要此模型才能使用表单。

home.html中 −

<!DOCTYPE html>
<html>
   <head>
      <title>TUT</title>
   </head>
   <body>
      {% for fm in commentform %}
      <form method="post">
         {%csrf_token%}

         {{fm.errors}}<br>
         {{fm.label}}:{{fm}}<br>
         {%endfor%}
            <button type="submit">Submit</button>
      </form>
   </body>
</html>

这是一个简单的前端,我们在此呈现我们的表单。

forms.py中 −

from django import forms
from .models import CommentModel
class CommentForm(forms.Form):
   comment=forms.CharField(widget=forms.Textarea(attrs={'class':'comment','title':'add comment'})) # this is the line which is used for widget, here I added TextArea widget you can see we also assigned class to widget using attrs attribute.

def save(self):
   data=self.data
   modelRef=CommentModel(comment=data['comment'])
   modelRef.save()

它就是我们创建表单的地方。我们使用了内置 Django 表单小部件来呈现表单中的文本区域。

输出

更新于: 25-8-2021

942 次浏览

开启您的职业生涯

通过完成课程获得认证

开始
广告