微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django 表单仅在我按下提交按钮时显示

如何解决Django 表单仅在我按下提交按钮时显示

我的表单是隐藏的,它只显示提交按钮,当我点击它时,表单会显示

Crear Tarea= 创建任务。

它基本上是创建任务的 crud。

以下是我的观点:

class Crear_Tarea(View):
def get(self,request,*args,**kwargs):
    context = {
        'form': TareaForm()
    }
    return render(request,"crear_tarea.html",context)

def post(self,**kwargs):
    context = {
        'form': TareaForm()
    }
    formulario = TareaForm(request.POST or None)
    if formulario.is_valid():
        formulario.save()
        messages.success(request,'Tablero seleccionado con éxito!')
    context['crear_tarea']= formulario
    return render(request,context)

我的表格:

class TareaForm(forms.ModelForm):
class Meta:
    model = Tarea
    fields = ('nombre','descripcion','fecha_creacion','fecha_termino','user','id_columna','id_tipo','detalle','id_documento','estado','estado_avance','posicion')
def save(self,commit=True):
    user = super().save(commit=False)
    user.id = self.cleaned_data['user']

    if commit:
        user.save()
    return user

和我的 Models.py

class Tarea(models.Model):
id_tarea = models.AutoField(primary_key=True)
nombre = models.CharField(max_length=99)
descripcion = models.CharField(max_length=99)
fecha_creacion = models.DateTimeField(null=True,blank=True)
fecha_termino = models.DateTimeField(null=True,blank=True)
user = models.ForeignKey(Usuario,on_delete=models.CASCADE)
id_columna = models.ForeignKey('Columna',on_delete=models.CASCADE)
id_tipo = models.ForeignKey('Tarea_tipo',on_delete=models.CASCADE)
detalle = models.CharField(max_length=255)
id_documento = models.ForeignKey('Documento',on_delete=models.CASCADE)
estado = models.IntegerField(blank=True,null=True)
estado_avance = models.IntegerField(blank=True,null=True)
posicion = models.IntegerField(blank=False,null=False)
def __str__(self):
    return self.nombre

crear_tarea.html

{% extends "base.html" %}
{% load static %}
<!doctype html>
<html lang="en">
    <Meta charset="utf-8">
    <Meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
    <title>{% block title %}Crear Tarea Ari-J{% endblock %}</title>
    {% block content %}
    <div class="container-fluid">
        <div class="row mt-5">
            <div class="col-12 my-5">
                <h1 style="font-size: 42;">Crear Tarea</h1>
                {% if messages %}
                <ul class="messages">
        {% for message in messages %}
        
        <li  {% if message.tags %} class=" {{ message.tags }} " {% endif %}> {{ message }} </li>
        {% endfor %}
    </ul>
    {% endif %}
                <form action="" method="POST" enctype="multipart/form-data">
                    {% csrf_token %} 
                    <table class="table table-bordered table-striped text-center"> 
                        {{ crear_tarea.as_table }} 
                    </table> 
                    <button type="submit" class="btn btn-primary" name='crear_tarea'>Crear Tarea</button>
                </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
    {% endblock %}
</html>

它只有在我把所有东西都用到 GET 方法时才有效,但是当我使用 get 时,我无法在数据库添加新任务。

解决方法

将您的 post 方法更改为:

def post(self,request,*args,**kwargs):
    formulario = TareaForm(request.POST or None)
    if formulario.is_valid():
        formulario.save()
        messages.success(request,'Tablero seleccionado con éxito!')
    context = {
        'form': formulario
    }
    return render(request,"crear_tarea.html",context)

然后更新您的模板以使用 {{ form.as_table }} 代替 {{ crear_tarea.as_table }}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?