【发布时间】:2016-02-22 06:16:25
【问题描述】:
我的 HTML http://127.0.0.1:8000/orden-detalle/1
<form method="POST">
{% csrf_token %}
{% if orden.anulado == True %}
<ul>
<li><input id="estado_reanudar" name="estado" value="FALSE" type="radio">Anulado</li>
<input type="hidden" name="pk" value="{{ orden.pk }}">
</ul>
<ul>
<li>
<input type="submit" value="Reanudar Orden" />
</li>
</ul>
{% else %}
<ul>
<li><input id="estado_reanudar" name="estado" value="TRUE" type="radio">Activo</li>
<input type="hidden" name="pk" value="{{ orden.pk }}">
</ul>
<ul>
<li>
<input type="submit" value="Anular Orden" />
</li>
</ul>
{% endif %}
我的意见.py
def orden_detalle(request, pk=False):
if pk:
orden = get_object_or_404(Orden, pk=pk)
else:
orden = Orden()
if request.method == 'POST':
estado = request.POST.get('estado')
pk = request.POST.get('pk')
orden.anulado = estado
orden.save()
return HttpResponseRedirect(reverse('ordenes:orden_detalle', args=(pk)))
template = 'ordenes/orden_detalle.html'
return render(request, template, locals())
终端
[19/Nov/2015 16:03:17] "POST /orden-detalle/1 HTTP/1.1" 302 0
[19/Nov/2015 16:03:17] "GET /orden-detalle/1 HTTP/1.1" 200 2885
我的 urls.py
urlpatterns = [
url(r'^ordenes/$', views.orden_listado, name='orden_listado'),
url(r'^orden-detalle/(?P<pk>[-\d]+)$', views.orden_detalle,name='orden_detalle'),
]
当我使用表单更改“orden”的“estado”时,会抛出错误 302。 它应该改变我的html,但没有。 哪里出错了?
【问题讨论】:
-
302 不是错误,它是对重定向的响应。在您的情况下,是您的
HttpResponseRedirect造成了这种情况。 -
@ShangWang 我可以解决吗?
-
没有错误信息,所以没有什么可修复的。你目前的方法有什么问题?需要进一步了解web开发的基础知识,302回复:en.wikipedia.org/wiki/HTTP_302
-
@ShangWang 当我在“orden.save()”之后打印“orden.anulado”时显示“orden.anulado”发生了变化。但它看不到数据库中的变化。无法保存更改。该字段是一个布尔值。
-
那么您需要编辑您的问题以反映这一点。唯一可能不起作用的是您拥有
pk = request.POST.get('pk'),但从未使用过pk。除此之外,我认为您的代码应该可以工作。