Я создал модель формы с помощью django. Однако форма не сохраняется при отправке. На странице продолжает отображаться страница недействительной формы.
index.html
<div class="container add_dog_form">
<form method="POST">
{% csrf_token %}
<div class="row" id="namefield">
{{ form.as_table }}
</div>
<div class="row">
<button type="Submit" id="form_submit">Submit</button>
</div>
</form>
</div>
forms.py
class DogForm(forms.ModelForm):
class Meta:
model = Dog
fields = ['name', 'dog_pic']
views.py
class IndexView(generic.ListView):
template_name = "takyi1/index.html"
context_object_name = "dogs_context"
dog_form = DogForm
def get_context_data(self, **kwargs):
self.dogs_context = super().get_context_data(**kwargs)
self.dogs_context['dogs'] = self.dog
self.dogs_context['form'] = self.dog_form
return self.dogs_context
def post(self, request, *args, **kwargs):
form = self.dog_form(request.POST)
if form.is_valid():
form.save()
return HttpResponse('Valid Form')
else:
return HttpResponse('inValid Form')
Самым простым методом является создание html-формы и сохранение данных в модель методом post.
Использование ModelForm только усложняет задачу.
Если вы используете приведенный ниже код, он работает идеально
class IndexView(generic.ListView):
template_name = "takyi1/index.html"
model = Dog
def post(self, request):
self.model(name=request.POST['name'],
dog_pic=request.POST['dog_pic']).save( )
return HttpResponse('Valid Form')