路由不适用于我的AJAX请求

时间:2017-03-01 17:53:30

标签: python ajax django url-routing

我目前的网址格式定义如下:

    url(r'^potato/(?P<slug1>[-\w])/(?P<slug2>[-\w]+)/potatoajax/$', views.potatoajax, name='potatoajax'),

在我的观点中有一个功能:

def potatoajax(request):
  print 'Potato Ajax'
  if request.method == 'POST':
    print 'more potatoes'
  else:
    print 'dont print Potato AJax'

我的ajax请求如下:

var url = 'potatoajax/'; 
    $.ajax({
        url: url,
        data: {
          'hello': 'hello world',
          'csrfmiddlewaretoken': getToken(),
        },
        type: 'POST',
        dataType: 'json',
        success: function (data) {
          $('#message').html(data.message);
        }

但是,我一直在接受404请求=(我强烈怀疑这与我在url模式中的路由有关,但不知道如何解决这个问题。

这是错误消息:

POST http://localhost:8000/potato/potato1/potato2/potatoajax/ 404 (Not Found)

如果我按照建议修改了以下网址:

url(r'^potato/(?P<slug1>[-\w]+)/(?P<slug2>[-\w]+)/potatoajax/$', views.potatoajax, name='potatoajax'),

由于/ potato / potato1 / potato2 / potatoajax /中的TypeError,我得到500张POST potatoajax()得到了一个意外的关键字参数'slug2'。

然而,这是另一个问题,所以如果需要我会发布另一个问题。

1 个答案:

答案 0 :(得分:1)

在你的urls.py

你没有slug1的乘数

url(r'^potato/(?P<slug1>[-\w]+)/(?P<slug2>[-\w]+)/potatoajax/$', views.potatoajax, name='potatoajax'),

你的观点将接受另外两个论点。

def potatoajax(request, slug1, slug2):
  print 'Potato Ajax'
  if request.method == 'POST':
    print 'more potatoes'
  else:
    print 'dont print Potato AJax'