【问题标题】:Ajax call is not going to view function djangoAjax 调用不会查看函数 django
【发布时间】:2018-10-11 20:07:39
【问题描述】:

您好,我正在向 django 视图发送请求,但它没有访问视图功能。两者都在同一个应用程序中。而且我正在使用调试工具,所以我尝试调试,但在我看来,没有收到任何呼叫并且 我的ajax调用代码是这样的

$.ajax({
    url: '/edit_profile/',
    type: 'get', // This is the default though, you don't actually need to always mention it
    success: function(data) {
        alert(data);
    },
    failure: function(data) { 
        alert('Got an error dude');
    }
});

url.py

path('edit_profile/', views.edit_profile , name="edit_profile"),

view.py

def edit_profile(request):
       print(request)   
       print(request)     
    if request.method == 'POST':
       return render(request, 'authenticate/edit_profile.html', context)

我正在调试,但此视图函数中未收到调用。

【问题讨论】:

  • 您是否已经在 Chrome Devtools 网络面板中检查了 ajax 调用?

标签: python jquery ajax django


【解决方案1】:

你可以在这里看到现场演示REPL

如果您不希望您的视图检查 csrf 令牌,请首先执行此操作。这可以通过使用装饰器@csrf_exempt 来完成。

view.py

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def edit_profile(request):
    print(request)
    if request.method == 'GET':
        return render(request, 'authenticate/edit_profile.html')

url.py

path('edit_profile/', views.edit_profile , name="edit_profile"),

ajax 请求

$.ajax({
    url: '/edit_profile/',
    type: 'GET',// This is the default though, you don't actually need to always mention it
    data:{},
    success: function(data) {
        alert(data);
    },
    failure: function(data) { 
        alert('Got an error dude');
    }
});

【讨论】:

  • 只是 csrf 令牌?
  • 是的,我想是的 :) @gamer
  • 谢谢。意思是说如果我使用 Ajax POST 或 GET 我需要使用 csrf 令牌示例。
  • 您可以使用这种方式也可以使用 csrf 令牌来防止您受到 CSRF 攻击。 :)
猜你喜欢
  • 2017-04-29
  • 2015-03-06
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 2023-03-29
  • 2018-10-02
相关资源
最近更新 更多