Python 保存表单并重定向到同一url-无法保存更改-Django

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

我的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-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>