猿问

从 Django 1.11 升级到 Django 2.1 后 request.POST 为空

这篇文章是对上一个问题的跟进:


Django request.POST 为空


我在 Visual Studio 2015 上启动并运行了 Python 3.5.4 和 Django 1.11.13项目。我后来更新到 Django 2.1.2,因为我想导入“路径”模块,以便我可以使用它:


urlpatterns = [


    path ( '',                                c_views.Indice,              name = 'indice' ),

    path ( '<int:CompiladoID>',               c_views.Detalle,             name = 'detalle'),

    path ( 'elementos/<int:CompiladoID>',     c_views.Elementos,           name = 'elementos'),

    path ( 'datoselementos/<int:ElementoID>', c_views.DatosElemento,       name = 'datoselemento'),

...而不是这个:


urlpatterns = [


    url ( r'^$',                                    c_views.Indice,         name = 'indice'),

    url ( r'^(?P<CompiladoID>\d+)/$',               c_views.Detalle,        name = 'detalle' ),

    url ( r'^(?P<CompiladoID>\d+)/elementos$',      c_views.Elementos,      name = 'elementos' ),

    url ( r'^(?P<CompiladoID>\d+)/generar$',        c_views.Generar,        name = 'generar' ),

我觉得更容易声明和阅读。在此更改之后,我开始遇到 request.POST 问题。我收到了“请求”响应,但 POST 为空,如下所示:

事实上,我最初并没有意识到这一点。我花了 3 天时间,与我恢复的备份副本进行比较,才意识到 Django 版本不同。也就是说,我对版本的 Django 不应该能够做旧版本所做的事情感到困惑,除非发生了我不知道的变化。我只用 Python/Django 工作了几个月,有人能告诉我这是否有原因吗?我可以不使用path代替urlurlpatterns使用的 Django 2.1.2 吗?

繁星点点滴滴
浏览 306回答 1
1回答

牛魔王的故事

MIDDLEWARE_CLASSES在 Django 1.10 中被弃用并在 Django 2.0 中删除。你应该MIDDLEWARE改用。您应该删除,SessionAuthenticationMiddleware因为自 Django 1.10 以来不再需要它。Django 1.11 给出了一个弃用警告,你应该从 切换MIDDLEWARE,但你一定错过了这个。在升级 Django 之前,最好阅读发行说明并修复任何弃用警告。有关更多信息,请参阅升级指南。
随时随地看视频慕课网APP

相关分类

Python
我要回答