Django में, आप कॉन्टैक्ट फॉर्म बहुत आसानी से बना सकते हैं लेकिन इसमें बहुत सारी चीजों को मैनेज करना पड़ता है जैसे फॉर्म्स, व्यूज, मॉडल्स बनाना, और फिर मॉडल को एडमिन में रजिस्टर करना, आदि। इस लेख में, हम देखेंगे कि हमारे कॉन्टैक्ट फॉर्म के लिए एक प्रीडिफाइंड पैकेज का उपयोग कैसे करें जो डेटा को एक प्रीडिफाइंड मॉडल में सेव करेगा।
हम एक कॉन्टैक्ट फॉर्म बनाएंगे जो models.py या views.py में कोई कोड लिखे बिना या कोई HTML लिखे बिना डेटा को मॉडल में स्टोर करेगा। तो, चलिए शुरू करते हैं।
उदाहरण
सबसे पहले, एक Django प्रोजेक्ट और एक ऐप बनाएं।
django-contactforms पैकेज इंस्टॉल करें:
pip install django-contactforms
फिर, settings.py में, निम्नलिखित लाइन जोड़ें:
INSTALLED_APPS += ["contactforms"]
इस मॉड्यूल और अपने ऐप का नाम INSTALLED_APPS में जोड़ें।
प्रोजेक्ट के urls.py में:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('contactforms.urls')),
path("aftercontact", include('MyForm.urls'))
]
दो URL एंडपॉइंट बनाएं, एक कॉन्टैक्ट फॉर्म के लिए और दूसरा सबमिट करने के बाद रीडायरेक्ट के लिए।
ऐप के urls.py में:
from django.urls import path, include
from . import views
urlpatterns = [
path('', views.home, name="home"),
]
यहां, हमने वह HTML रेंडर किया जो कॉन्टैक्ट फॉर्म भरने के बाद दिखाया जाएगा।
views.py में:
from django.shortcuts import render
def home(request):
return render(request, "home.html")
यहां हमने अपना HTML रेंडर किया।
अब, ऐप डायरेक्टरी में एक फोल्डर बनाएं और इसे "templates" नाम दें। इसके अंदर एक फोल्डर जोड़ें और इसे "contact" कहें और इसके अंदर एक HTML फाइल जोड़ें और इसे contact.html नाम दें। contact.html में निम्नलिखित लाइनें जोड़ें:
<!DOCTYPE html>
<html>
<body>
<div class="row">
<form action="{% url 'contact' %}" method="post">
<h3>Send a Message</h3>
{% csrf_token %}
<div class="form-group">
{% if messages %}
{% for message in messages %}
<span{% if message.tags %} class="{{ message.tags }}"{% endif %} style="color: green">
{{ message }}
</span>
{% endfor %}
{% endif %}
</div>
<div class="form-group">
{{ forms.name }}
</div>
<div class="form-group">
{{ forms.email }}
</div>
<div class="form-group">
{{ forms.subject }}
</div>
<div class="form-group">
{{ forms.message }}
</div>
<button class="btn btnprimary" type="submit">Submit</button>
</form>
</div>
</body>
</html>
यह वह फॉर्म है जो "/" एंडपॉइंट पर दिखाया जाएगा। हमने बस अपने पैकेज से फॉर्म लोड किया।
अब वापस templates फोल्डर पर आएं और home.html जोड़ें (contact फोल्डर के अंदर नहीं) और निम्नलिखित लाइनें जोड़ें:
<!DOCTYPE html>
<html>
<head><title>tut</title></head>
<body>
<h3>Successfull</h3>
</body>
</html>
आउटपुट
यह वह HTML है जो कॉन्टैक्ट फॉर्म सबमिट करने के बाद रेंडर होता है।
