如何解决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 举报,一经查实,本站将立刻删除。