【问题标题】:Default Django Rest Framework HTML POST Forms not showing after upgrading to latest versions升级到最新版本后,默认 Django Rest Framework HTML POST 表单不显示
【发布时间】:2020-01-16 13:39:52
【问题描述】:

以前在使用 Django REST 框架时,我获得了可浏览的 API 端点,并且可以使用 POST 和 PUT 表单输入数据。

但是,在我最近更新了我的依赖项后,POST 和 PUT 的 HTML 表单不再显示 [图 2],甚至尝试单击右上角的我的用户名以获取例如注销的选项,我只是被重定向回同一个 url,并附加了 /# [图 1]。 如果我通过输入 localhost/myEndpoint/1/ 转到特定条目并尝试删除按钮,那也不会执行任何操作。

manage.py runserver 的输出中没有日志表明出现问题

这是一个错误还是有什么方法可以解决这个问题?

我使用的是以下版本的更新:

  • Django 2.2 => 2.2.9
  • djangorestframework 3.9.2 => 3.11.0
  • djangorestframework-simplejwt => 4.4.0

图一:

图二:

【问题讨论】:

  • 您解决了这个问题吗?我也不能发出 post/put/patch/delete 请求。当我点击按钮时,它只是发送获取请求而不是相应的标题

标签: django django-rest-framework


【解决方案1】:

升级后收集静态。

【讨论】:

  • 收集静电是什么意思?我是否必须对 DRF 的静态文件进行一些更改才能使其正常工作?
  • 这是关于 django 更新他们如何使用静态文件、CSS 或其他东西或一些 javascript 链接格式的东西,idk。您只需要再次收集静态并替换旧版本即可。 ./manage.py collectstatic
【解决方案2】:

我认为您从 serializers.Serializer 继承了您的 Serializer 类,请改用 serializers.ModelSerializer,这应该可以解决问题

也就是说,

from rest_framework import serializers

class MySerializer(serializers.ModelSerializer): # instead of serializers.Serializer
    # your class definition here
    pass

这应该可以解决问题

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,经过大量研究后,我发现问题出在 ublock 来源。

    Ublock origin 阻止浏览器在 localhost 上发出请求,因此我将其停用,现在它按预期工作。

    如果您有同样的问题,请检查您的广告拦截器。

    【讨论】:

      猜你喜欢
      • 2020-03-10
      • 2022-11-26
      • 2019-03-29
      • 2016-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      相关资源
      最近更新 更多