'WSGIRequest'对象没有属性'is_ajax',将ajax添加到django项目时出错

问题描述 投票:0回答:1

/order 处出现属性错误

'WSGIRequest' object has no attribute 'is_ajax'

将ajax添加到django项目时发生错误整个项目卡住了。

我正在创建一个 django 项目,并尝试使用指南。我的代码在开发中工作,但是一旦我将 ajax 添加到代码中,代码就会在 ajax 请求上出现错误。在开发中,使用它来提交测验效果非常好,但在开发中则不然。我尝试使用 pk 进行提交,但它返回错误并且无法创建准确的结果实例。下面是 order.html cart.js 和视图。

在做我的餐厅 Django 项目时,添加了 ajax 用于将消息传递到服务器。但服务器显示错误并且没有显示输出。

显示消息

 if request.is_ajax(): error 
cart.js

function order(){
    var test='Ajax test';
    var ur='food/order';
    var orderData={};
    orderData['test']=test;
    $.ajax({
    url:ur,
    type:'POST',
    data:orderData,
    success:function(data){
    console.log("Data sent")}
})
}

views.py

@csrf_exempt

def order(request):
    if request.is_ajax():
        test=request.POST.get['test']
        print(test)
    ctx= {'active_link':'order'}
    return render(request,'food/order.html',ctx)

cart.js


function order(){
    var test='Ajax test';
    var ur='food/order';
    var orderData={};
    orderData['test']=test;
    $.ajax({
    url:ur,
    type:'POST',
    data:orderData,
    success:function(data){
    console.log("Data sent")}
})
}

订单.html

{% extends 'food/base.html' %}
{% load static %}
{% block title %}Order Food here {% endblock %}
{% block content %}

<div class="container-fluid m-4">
    <div class="row">
    <div class="col-md-6 text-center">
        <h3>Order</h3>
        <div class="row">
            <div class="col-md-6" id="name">
                <h5>Name</h5>
            </div>
            <div class="col-md-1" id="size">
                <h5>Size</h5>
            </div>
            <div class="col-md-2" id="price">
                <h5>Price</h5>
            </div>
        </div>
        <h5 id="total">Total :</h5>
    </div>
        <div class="col-md-1" id="rm">

        </div>
    <div class="col-md-5 mt-4">
        <h5>Messages</h5>
        <textarea name="message" id="message" cols="40" rows="5"></textarea>
        <div class="ml-auto m-4">
        <button type="submit" class="btn-success" onclick="order()">submit</button>
            </div>
    </div>
    </div>
</div>

<script src="{% static 'food/js/cart.js' %}"></script>

{% endblock %}
python html django ajax ajaxform
1个回答
0
投票

HttpRequest.is_ajax() 自 3.1 版本起已弃用。您可以在这里阅读 - https://docs.djangoproject.com/en/4.0/releases/3.1/#id2

文档引用:

request.is_ajax() 可以完全复制为 request.headers.get('x-requested-with') == 'XMLHttpRequest'

© www.soinside.com 2019 - 2024. All rights reserved.