I have a form to make POST data to database.
I'm using Django 1.11
views.py
class BusinessCreate(CreateView):
model = Business
fields = '__all__'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
messages.success(self.request, 'dispatch')
return super(BusinessCreate, self).dispatch(*args, **kwargs)
def form_valid(self, form):
messages.success(self.request, 'valid')
form.instance.user = self.request.user # set user_id field to session user
form.save()
def get_success_url(self):
messages.success(self.request, 'Business Added Successfully')
return reverse('business:list')
template
<form class="card" method="POST">
{% csrf_token %}
{{ form.non_field_errors }}
{{ form.non_field_errors }}
{% render_field form.name class='form-control' placeholder='Business Title' %}
{{ form.name.errors }}
{% render_field form.business_type class='form-control' %}
{{ form.business_type.errors }}
<button class="btn">Add Business</button>
</form>
When I submit the form, it doesn't save and also does not return any error.
The messages
in three methods in views.py
are to check which method is called and it always prints dispatch
since the only dispatch is called.
I used debug_toolbar
to check for debug whether request is POST
or GET
or none of the two and it show.