【问题标题】:Use an existing HTML Template Form and submit data through Django使用现有的 HTML 模板表单并通过 Django 提交数据
【发布时间】:2021-09-04 15:31:55
【问题描述】:

我想用现有的HTML FORM 制作一个POST REQUEST,将其存储在数据库中,但每次我尝试通过表单提交数据时,它什么都不做。它不会将数据添加到数据库中。我该怎么办?

顺便说一句,我在这些帖子之后这样做:

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")

]

更新 N°1

应用更改后,我发现以下错误

【问题讨论】:

    标签: django


    【解决方案1】:
    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')
    

    更新

    替换这一行

    <input type="text",name="NombreProyecto", placeholder="Nombre del Proyecto" >
    

    用这个:

    <input type="text", name="NombreProyecto", placeholder="Nombre del Proyecto">
    

    显然是名称和逗号之间的空格,导致它返回 None

    【讨论】:

    • 谢谢!但在更改后我收到一个完整性错误,我不明白这意味着什么(上面更新了帖子)
    • 我更新了答案,是 html 文件导致了问题,现在应该可以了
    猜你喜欢
    • 2019-08-30
    • 2018-08-13
    • 2020-11-09
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 2021-03-19
    • 2015-06-05
    相关资源
    最近更新 更多