首页 > 解决方案 > 405 方法不允许,Django + ngrok,仅在我的本地机器上

问题描述

这是一个遗留项目,我正在与我目前工作的其他人一起工作。并且正在做我无法理解的非常奇怪的行为。

它返回 405 http 响应状态,这没有意义,因为这个视图已经接受了 POST 请求 在此处输入图像描述

我会分享几个片段,我只是在我要标记的评论中检测到这种情况。

这是视图文件,它实际上接受 GET 和 POST 方法

@csrf_exempt
@load_checkout
@validate_cart
@validate_is_shipping_required
@require_http_methods(["GET", "POST"])
def one_step_view(request, checkout):
    """Display the entire checkout in one step."""

这是修改响应的装饰器,并返回 405。

def load_checkout(view):
    """Decorate view with checkout session and cart for each request.
    Any views decorated by this will change their signature from
    `func(request)` to `func(request, checkout, cart)`."""
    @wraps(view)
    @get_or_empty_db_cart(Cart.objects.for_display())
    def func(request, cart):
        try:
            session_data = request.session[STORAGE_SESSION_KEY]
        except KeyError:
            session_data = ''
        tracking_code = analytics.get_client_id(request)

        checkout = Checkout.from_storage(
            session_data, cart, request.user, tracking_code)

        response = view(request, checkout, cart)  # in this response it returns 405. 
        if checkout.modified:
            request.session[STORAGE_SESSION_KEY] = checkout.for_storage()
        return response

    return func

我什么时候可以开始找出问题的任何想法或线索?

郑重声明:我没有编写这个代码,这是几天前工作的,它只是在我的本地环境中发生,在舞台和生产中,甚至其他开发人员的本地工作都很好。我有所有的要求和依赖关系,并且已经更新。

顺便说一句,我正在使用 ngrok 进行隧道传输 在此处输入图像描述

--在此处输入图像描述

在此处输入图像描述

标签: pythondjangohttpdebuggingngrok

解决方案


如果你的前端使用不同的 HOST && PORT 你需要在 Django 应用中添加 CROS


推荐阅读