Django: Form not saved in Django database

Asked

Viewed 322 times

-1

When I click to register the page simply refreshes and nothing is saved in the database. In the Django console I get the message:

"GET /people/ HTTP/1.1" 200 898 "POST /person-add/ HTTP/1.1" 200 898

py views.

from django.shortcuts import render, redirect
from .models import *
from .forms import *

def pessoas(request):
    dados = {'pessoas': Pessoa.objects.all(), 'form': PessoaForm}
    return render(request,'pessoas.html', dados)


def PessoaAdd(request):
    form = PessoaForm(request.POST or None)
    if form.is_valid():
        form.save()
    return redirect(request, 'core_pessoa')

Forms.py

from django.forms import ModelForm
from .models import Pessoa


class PessoaForm(ModelForm):
    class Meta:
        model = Pessoa
        fields = '__all__'

py.

from django.urls import path
from .views import *

urlpatterns = [
    path('', home),
    path('pessoas/', pessoas, name='core_pessoa'),
    path('pessoa-add/', pessoas, name='core_pessoa_add'),

html page

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Pessoas</title>
</head>
<body>
    <h1>Lista de Pessoas</h1>
    <ul>
        {% for pessoa in pessoas %}
        <li>{{ pessoa }}</li>
        {%  endfor %}
    </ul>
    <form action="{% url 'core_pessoa_add' %}" method="post">
        {% csrf_token %}
        {{form.as_p}}
        <button type="submit">Cadastrar</button>
    </form>


</body>
</html>

1 answer

0


You have your route calling the wrong function. Change your urls.py to:

from django.urls import path
from .views import *

urlpatterns = [
    path('', home),
    path('pessoas/', pessoas, name='core_pessoa'),
    path('pessoa-add/', PessoaAdd, name='core_pessoa_add'), # altera nesta linha pessoas para PessoaAdd

Browser other questions tagged

You are not signed in. Login or sign up in order to post.