इस लेख में, हम देखेंगे कि Django फॉर्म में विजेट्स का उपयोग कैसे करें। विजेट्स फ्रंटएंड को बेहतर बनाने के लिए काफी मददगार हो सकते हैं। विजेट्स HTML एलिमेंट्स हैं जो Django फॉर्म से रेंडर होते हैं, टेक्स्टएरिया, इनपुट, पासवर्ड इनपुट, आदि सभी विजेट्स हैं।
सबसे पहले एक 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
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
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'}))
# यह वह लाइन है जिसका उपयोग विजेट के लिए किया जाता है, यहां मैंने TextArea विजेट जोड़ा, आप देख सकते हैं कि हमने attrs एट्रिब्यूट का उपयोग करके विजेट को क्लास भी असाइन की।
def save(self):
data = self.data
modelRef = CommentModel(comment=data['comment'])
modelRef.save()
यह वह जगह है जहां हम अपना फॉर्म बनाते हैं। हमने फॉर्म में टेक्स्टएरिया रेंडर करने के लिए बिल्ट-इन Django फॉर्म विजेट का उपयोग किया।
आउटपुट
