Reputation: 79
I'd like to make a POST REQUEST
with an existing HTML FORM
, to store it in a database, but everytime I tried to submit data through the form, it doesn't do nothing. it doesn't add data to the database. What should I do?
By the way I'm doing this following those post:
Django form using HTML template
MultiValueDictKeyError generated in Django after POST request on login page
Registro.html
{% extends "RegistrarProyecto/layout.html" %}
{% block title %} {% endblock %}
{% block content %}
<h1>Crear Usuario</h1>
<form class="CrearUsuario" action="{% url 'registro' %}" method="POST">
{% csrf_token %}
<input type="text",name="NombreProyecto", placeholder="Nombre del Proyecto" >
<br>
<br>
<input type ="text", name="ResponsableProyecto", placeholder ="Responsable del proyecto">
<br>
<br>
<textarea name="DescripcionProyecto", rows="4", cols="50"></textarea>
<br>
<br>
<input type="submit" value="Registrar">
</form>
<br>
<a href="{% url 'index' %}">Ir a Bienvenido</a>
{% endblock %}
views.py
def registro(request):
if request.method == 'POST':
NombreProyecto = request.POST.get('NombreProyecto')
ResponsableProyecto = request.POST.get('ResponsableProyecto')
DescripcionProyecto = request.POST.get('DescripcionProyecto')
return render(request, 'RegistrarProyecto/Registro.html')
else:
return render(request, 'RegistrarProyecto/Registro.html')
models.py
from django.db import models
# Create your models here.
class Proyecto(models.Model):
NombreProyecto = models.CharField(max_length = 64)
ResponsableProyecto = models.CharField(max_length= 64)
DescripcionProyecto = models.CharField(max_length = 64)
def __str__(self):
return f"{self.NombreProyecto}"
class Evaluador(models.Model):
NombreEvaluador = models.CharField(max_length=64)
Proyecto = models.ManyToManyField(Proyecto, blank=True, related_name="Evaluador")
def __str__(self):
return f"{self.NombreEvaluador} {self.Proyecto}"
urls.py
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index"),
path("Registro", views.registro, name="registro")
]
UPDATE N°1
After applying the changes I recibe the following error
Upvotes: 1
Views: 477
Reputation: 2165
def registro(request):
if request.method == 'POST':
NombreProyecto = request.POST.get('NombreProyecto')
ResponsableProyecto = request.POST.get('ResponsableProyecto')
DescripcionProyecto = request.POST.get('DescripcionProyecto')
Proyecto.objects.create(NombreProyecto=NombreProyecto,ResponsableProyecto=ResponsableProyecto,DescripcionProyecto=DescripcionProyecto)
return redirect("to_some_url_name")
return render(request, 'RegistrarProyecto/Registro.html')
Update
replace this line
<input type="text",name="NombreProyecto", placeholder="Nombre del Proyecto" >
with this:
<input type="text", name="NombreProyecto", placeholder="Nombre del Proyecto">
apperantly the space between name and comma, caused it to return None
Upvotes: 1