路由不适用于我的 AJAX 请求

Routing not working for my AJAX request

我目前有一个 url 模式定义如下:

    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如下:

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

由于 /potato/potato1/potato2/potatoajax/ 处的类型错误,我得到了 500 POST potatoajax() 得到了一个意外的关键字参数 'slug2'。

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

在你的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'