Python 保存表单并重定向到同一url-无法保存更改-Django
我的HTML 终点站Python 保存表单并重定向到同一url-无法保存更改-Django,python,django,forms,post,Python,Django,Forms,Post,我的HTML 终点站 [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 我的URL.py urlpatterns = [ url(r'^ordenes/$', views.orden_listado, name='orden_listado'), url(r'^orden-det
[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
我的URL.py
urlpatterns = [
url(r'^ordenes/$', views.orden_listado, name='orden_listado'),
url(r'^orden-detalle/(?P<pk>[-\d]+)$', views.orden_detalle,name='orden_detalle'),
]
urlpatterns=[
url(r“^ordenes/$”,views.orden_listado,name='orden_listado'),
url(r'^orden detalle/(?P[-\d]+)$),views.orden_detalle,name='orden_detalle'),
]
当我使用表单更改“orden”的“estado”时,抛出错误302。
它应该是改变我的html,但没有。
错误在哪里?更改单选按钮中的值:
<li><input id="estado_reanudar" name="estado" value="0" type="radio">Anulado</li>
<li><input id="estado_reanudar" name="estado" value="1" type="radio">Activo</li>
阿努拉多
它现在可以工作了。我将我的“视图”修改为: 和我的html:
<form method="POST">
{% csrf_token %}
{% if orden.anulado == 1 %}
<ul>
<li>Anulado</li>
<li>
<input type="submit" value="Reanudar Orden" />
</li>
</ul>
{% else %}
<ul>
<li>Activo</li>
<li>
<input type="submit" value="Anular Orden" />
</li>
</ul>
{% endif %}
</form>
{%csrf_令牌%}
{%if orden.anulado==1%}
- 阿努拉多
-
{%else%}
- 活跃的
-
{%endif%}
我以为代码302是个错误,我错了。文档指出,子类HttpResponseRedirect返回HTTP状态代码302。
302不是错误,而是对重定向的响应。在您的情况下,是您的
HttpResponseRedirect
导致了这一问题。@ShangWang,因为我可以修复它?没有错误消息,所以没有什么需要修复的。你目前的方法有什么问题?您需要了解更多有关web开发的基本知识,302回复:@ShangWang当我在“orden.save()”之后打印“orden.anulado”时,显示“orden.anulado”发生了变化。但它无法看到数据库中的变化。无法保存更改。该字段是布尔值。然后您需要编辑问题以反映这一点。唯一可能不起作用的是您有pk=request.POST.get('pk')
,但是从来没有使用过pk
。除此之外,我认为您的代码应该可以工作。
<li><input id="estado_reanudar" name="estado" value="0" type="radio">Anulado</li>
<li><input id="estado_reanudar" name="estado" value="1" type="radio">Activo</li>
def orden_detalle(request, pk=False):
if pk:
orden = get_object_or_404(Orden, pk=pk)
else:
orden = Orden()
if request.method == 'POST':
orden.anulado = not orden.anulado
orden.save()
return HttpResponseRedirect(reverse('ordenes:orden_detalle', args=(pk)))
template = 'ordenes/orden_detalle.html'
return render(request, template, locals())
<form method="POST">
{% csrf_token %}
{% if orden.anulado == 1 %}
<ul>
<li>Anulado</li>
<li>
<input type="submit" value="Reanudar Orden" />
</li>
</ul>
{% else %}
<ul>
<li>Activo</li>
<li>
<input type="submit" value="Anular Orden" />
</li>
</ul>
{% endif %}
</form>