Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิดเจ็ตแบบฟอร์มใน Django


ในบทความนี้ เราจะมาดูวิธีการใช้วิดเจ็ตในรูปแบบ Django วิดเจ็ตอาจช่วยทำให้ฟรอนท์เอนด์ดีขึ้นได้ วิดเจ็ตคือองค์ประกอบ html ที่แสดงผลจากแบบฟอร์ม Django, textarea, อินพุต, การป้อนรหัสผ่าน ฯลฯ ทั้งหมดเป็นวิดเจ็ต

ขั้นแรก มาสร้างโปรเจ็กต์ Django และแอพกันก่อน ฉันสร้างโครงการด้วยชื่อ "tutorial14" และแอปชื่อ "djangoFormWidget" .

เพิ่มแอปใน settings.py และรวม URL ของแอปในโครงการ urls.py.

สร้างไฟล์และโฟลเดอร์พื้นฐานทั้งหมด เช่น เทมเพลต home.html, form.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>

เป็น frontend แบบง่ายๆ ที่เราใช้แสดงแบบฟอร์ม

ใน 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 ในตัวเพื่อแสดงพื้นที่ข้อความในแบบฟอร์ม

ผลลัพธ์

วิดเจ็ตแบบฟอร์มใน Django