请求 'GET' - Django CRUD 条件
Request 'GET' - Django CRUD conditional
我正在尝试在 Django 中对我的数据库进行查询,但到目前为止我没有得到任何结果,我对这个有点困惑。
说proyecto
是我需要查询的一种文档,那么我在models上有这个:
class Proyecto(models.Model):
id_proyecto = models.IntegerField(primary_key=True) #integer NOT NULL, CLAVE PRIMARIA
nombre_proyecto = models.TextField(null=True) #text,
existente = models.BooleanField()
这里,existente
是我在模板上的复选标记,因此,如果该复选标记处于活动状态,则将您指定的任何文档带入 nombre_proyecto
charfield。
forms.py:
class ProyectoForm(forms.Form):
nombre_proyecto = forms.CharField(widget=forms.TextInput())
existente = forms.BooleanField(required=False)
def clean(self):
return self.cleaned_data
然后,views.py:
def proyecto_view(request):
alerta=""
#existente = request.GET['existente']
#if existente is not None and existente != '':
if request.method == "POST":
form = ProyectoForm(request.POST)
if form.is_valid():
name =form.cleaned_data['nombre_proyecto'] #hay que verificar si el proyecto ya existe
if Proyecto.objects.count() > 0:
alerta="ya existe el proyecto"
formProy = 1
ctx ={'alerta':alerta, 'formProy':formProy}
return render_to_response('scppp/inicial.html', ctx, context_instance=RequestContext(request))
else:
if Proyecto.objects.count() == 0:
id_proyecto=1
else:
id_proyecto=Proyecto.objects.all().aggregate(Max('id_proyecto'))['id_proyecto__max']+1
nombre_proyecto = name
else:
if Proyecto.objects.count() < 0:
alerta = "Introduzca un nombre de proyecto"
formProy = 1
else:
alerta = "data erronea"
formProy = 1
ctx = {'alerta':alerta, 'formProy':formProy}
return render_to_response('scppp/inicial.html', ctx, context_instance=RequestContext(request))
if request.method == "GET" and 'existente' in request.GET: //This is the method
existente = request.GET['existente']
if existente is not None and existente != '':
Proyecto.objects.filter(nombre_proyecto=name)
return render_to_response('scppp/pozo.html', ctx, context_instance=RequestContext(request))
在我的模板上,这是我勾选 existente
:
的方式
<tr><td>
<span class="Sub-Titulo-Aplicacion">Proyecto: </span>
<input class="check-style" type="checkbox" name="tipo" value="checkbox" >Nuevo</input>
</td></tr>
<tr><td>
<input class="check-style" type="checkbox" name="existente" value="existente" >Existente</input>
</td></tr>
从 HTML 的角度看,复选标记 "works",但它实际上什么也没做...我不知道我是否应该在我的模板上声明一些东西,有很多很多方法,我感到困惑。
有什么想法吗?
非常感谢!
您的代码中有一些明显的错误:
if Proyecto.objects.count() < 0:
计数表示确定某物总数的行为。并且某物的总数不能小于零。
所以你的代码在逻辑上是错误的。此错误还会影响这些行:
if Proyecto.objects.count() > 0:
alerta="ya existe el proyecto"
formProy = 1
ctx ={'alerta':alerta, 'formProy':formProy}
return render_to_response('scppp/inicial.html', ctx, context_instance=RequestContext(request))
else:
if Proyecto.objects.count() == 0:
id_proyecto=1
else:
id_proyecto=Proyecto.objects.all().aggregate(Max('id_proyecto'))['id_proyecto__max']+1
nombre_proyecto = name
执行永远不会到达 else 语句。
同样在您的 ** GET 请求 ** 视图处理中还有另一个错误。
if existente is not None and existente != '':
Proyecto.objects.filter(nombre_proyecto=name)
return render_to_response('scppp/pozo.html', ctx, context_instance=RequestContext(request))
您没有使用数据库中选定的 Proyecto 实例。您应该将它们传递给您的模板。你也没有在这个范围内声明 ctx 。 (您刚刚在 POST 请求 处理中完成了,请求不能同时是 POST 和 GET)。
if existente is not None and existente != '':
projects = Proyecto.objects.filter(nombre_proyecto=name)
ctx = {"projects" : projects}
return render_to_response('scppp/pozo.html', ctx, context_instance=RequestContext(request))
并且在你的 scppp/pozo.html 你必须有这样的东西来展示它们并使用 projects:
<table>
{% for project in projects %}
<tr>
<td>{{project.id_proyecto}}</td>
<td>{{project.nombre_proyecto}}</td>
</tr>
{% endfor %}
</table>
我正在尝试在 Django 中对我的数据库进行查询,但到目前为止我没有得到任何结果,我对这个有点困惑。
说proyecto
是我需要查询的一种文档,那么我在models上有这个:
class Proyecto(models.Model):
id_proyecto = models.IntegerField(primary_key=True) #integer NOT NULL, CLAVE PRIMARIA
nombre_proyecto = models.TextField(null=True) #text,
existente = models.BooleanField()
这里,existente
是我在模板上的复选标记,因此,如果该复选标记处于活动状态,则将您指定的任何文档带入 nombre_proyecto
charfield。
forms.py:
class ProyectoForm(forms.Form):
nombre_proyecto = forms.CharField(widget=forms.TextInput())
existente = forms.BooleanField(required=False)
def clean(self):
return self.cleaned_data
然后,views.py:
def proyecto_view(request):
alerta=""
#existente = request.GET['existente']
#if existente is not None and existente != '':
if request.method == "POST":
form = ProyectoForm(request.POST)
if form.is_valid():
name =form.cleaned_data['nombre_proyecto'] #hay que verificar si el proyecto ya existe
if Proyecto.objects.count() > 0:
alerta="ya existe el proyecto"
formProy = 1
ctx ={'alerta':alerta, 'formProy':formProy}
return render_to_response('scppp/inicial.html', ctx, context_instance=RequestContext(request))
else:
if Proyecto.objects.count() == 0:
id_proyecto=1
else:
id_proyecto=Proyecto.objects.all().aggregate(Max('id_proyecto'))['id_proyecto__max']+1
nombre_proyecto = name
else:
if Proyecto.objects.count() < 0:
alerta = "Introduzca un nombre de proyecto"
formProy = 1
else:
alerta = "data erronea"
formProy = 1
ctx = {'alerta':alerta, 'formProy':formProy}
return render_to_response('scppp/inicial.html', ctx, context_instance=RequestContext(request))
if request.method == "GET" and 'existente' in request.GET: //This is the method
existente = request.GET['existente']
if existente is not None and existente != '':
Proyecto.objects.filter(nombre_proyecto=name)
return render_to_response('scppp/pozo.html', ctx, context_instance=RequestContext(request))
在我的模板上,这是我勾选 existente
:
<tr><td>
<span class="Sub-Titulo-Aplicacion">Proyecto: </span>
<input class="check-style" type="checkbox" name="tipo" value="checkbox" >Nuevo</input>
</td></tr>
<tr><td>
<input class="check-style" type="checkbox" name="existente" value="existente" >Existente</input>
</td></tr>
从 HTML 的角度看,复选标记 "works",但它实际上什么也没做...我不知道我是否应该在我的模板上声明一些东西,有很多很多方法,我感到困惑。
有什么想法吗?
非常感谢!
您的代码中有一些明显的错误:
if Proyecto.objects.count() < 0:
计数表示确定某物总数的行为。并且某物的总数不能小于零。
所以你的代码在逻辑上是错误的。此错误还会影响这些行:
if Proyecto.objects.count() > 0:
alerta="ya existe el proyecto"
formProy = 1
ctx ={'alerta':alerta, 'formProy':formProy}
return render_to_response('scppp/inicial.html', ctx, context_instance=RequestContext(request))
else:
if Proyecto.objects.count() == 0:
id_proyecto=1
else:
id_proyecto=Proyecto.objects.all().aggregate(Max('id_proyecto'))['id_proyecto__max']+1
nombre_proyecto = name
执行永远不会到达 else 语句。
同样在您的 ** GET 请求 ** 视图处理中还有另一个错误。
if existente is not None and existente != '':
Proyecto.objects.filter(nombre_proyecto=name)
return render_to_response('scppp/pozo.html', ctx, context_instance=RequestContext(request))
您没有使用数据库中选定的 Proyecto 实例。您应该将它们传递给您的模板。你也没有在这个范围内声明 ctx 。 (您刚刚在 POST 请求 处理中完成了,请求不能同时是 POST 和 GET)。
if existente is not None and existente != '':
projects = Proyecto.objects.filter(nombre_proyecto=name)
ctx = {"projects" : projects}
return render_to_response('scppp/pozo.html', ctx, context_instance=RequestContext(request))
并且在你的 scppp/pozo.html 你必须有这样的东西来展示它们并使用 projects:
<table>
{% for project in projects %}
<tr>
<td>{{project.id_proyecto}}</td>
<td>{{project.nombre_proyecto}}</td>
</tr>
{% endfor %}
</table>