pip install django-remote-forms
python
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from remote_forms import RemoteForm
python
@csrf_exempt
def dynamic_form(request):
form = RemoteForm(request.POST or None)
if request.method == 'POST':
if form.is_valid():
return JsonResponse({'success': True})
else:
errors = form.errors.as_json()
return JsonResponse({'success': False, 'errors': errors})
else:
return JsonResponse({'success': False, 'errors': 'Invalid request method'})
python
from django.urls import path
from .views import dynamic_form
urlpatterns = [
path('dynamic-form/', dynamic_form, name='dynamic_form'),
]
html
<form id="dynamicForm" method="POST" action="{% url 'dynamic_form' %}">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$('#dynamicForm').on('submit', function(event) {
event.preventDefault();
var form = $(this);
$.ajax({
type: form.attr('method'),
url: form.attr('action'),
data: form.serialize(),
success: function(response) {
if (response.success) {
alert('Form submitted successfully');
} else {
alert('Form submission failed: ' + response.errors);
}
},
error: function(xhr, textStatus, errorThrown) {
alert('Form submission error: ' + errorThrown);
}
});
});
</script>