Loading page
Use a Django Form for validation and requests for the upstream call.
import requests
from django import forms
from django.shortcuts import render
class ContactForm(forms.Form):
name = forms.CharField(max_length=100)
email = forms.EmailField()
message = forms.CharField(widget=forms.Textarea)
def contact(request):
status = None
form = ContactForm(request.POST or None)
if request.method == "POST" and form.is_valid():
response = requests.post(
"https://formivo.faizyab.me/api/f/YOUR_FORM_ID",
json=form.cleaned_data,
headers={"Accept": "application/json"},
timeout=10,
)
status = "sent" if response.status_code == 201 else "error"
return render(request, "contact.html", {"form": form, "status": status})201 on create; anything else should show a retry message.
| Symptom | Fix |
|---|---|
| CSRF failure | Include {% csrf_token %} in the template form. |
| 500 on submit | Wrap the request in try/except requests.RequestException. |