【问题标题】:django Jquery ajax request 404 errordjango Jquery ajax请求404错误
【发布时间】:2010-11-05 09:45:28
【问题描述】:

我希望有人可以在这里帮助我。我无法使用 django、jquery 和 jquery 表单验证插件进行成功的 ajax 调用。我正在尝试将表单电子邮件地址传递给视图方法,以查看它是否存在于 db 中。但是服务器响应是 ajax 请求的 404。在 Firebug 中,我可以看到发送的请求格式正确。

发送的请求是:http://127.0.0.1:8000/xEmailExists/?email=joeblow%40test.cc

urls.py 有:(r'^xEmailExists/(?P\d+)$', 'hwa.website.views.root.xEmailExists'),

我的 hwa.website.views.root 视图文件具有以下方法签名: def xEmailExists(请求,电子邮件):

我正在使用 Django 1.1 赌注

【问题讨论】:

  • 您想发布您的观点,以便我们查看详细信息

标签: jquery ajax django


【解决方案1】:

您的网址配置似乎有问题。以交互方式访问该 URL(即尝试手动导航到该 URL)会导致 404 吗?

Ajax 请求的 URL 并没有什么神奇之处,它们仍然只是 URL - 像在 Django 应用程序中调试任何 URL 一样调试它们。

除非我真的睡眠不足r'^xEmailExists/(?P\d+)$' 有几个问题:

  1. 您使用的 named URL pattern 没有名称 - 将 ?P 替换为 ?P<email>
  2. 您不希望 \d+ - 匹配 1 个或多个数字(即 0-9)。为了验证电子邮件,您可能希望匹配所有字符。
  3. 另外,将电子邮件作为查询字符串传递有什么意义 - 为什么不直接使用 http://127.0.0.1:8000/xEmailExists/joeblow%40test.cc

希望对您有所帮助!如果我搞砸了正则表达式匹配,我深表歉意 - 这是我往往不得不摆弄的事情之一,我还没有测试我的反应。

【讨论】:

  • Dominic 是对的,这是 urls.py 中的问题。 url 模式在 email 模式之后以 '$' 结尾,这不允许在 email 后面使用斜杠。 @john:将您的 url 模式更改为 r'^xEmailExists/(?P\d+)/$'
  • @Van Gale - 我感到困惑还是 \d+ 不匹配一个或多个数字?
  • @Dominic 是的,但是 \d+ 之后的 $ 意味着你不能有斜杠......他在他的“发送请求”中这样做了
  • 那么 r'^xEmailExists/(?P\d+)/$' 肯定不会起作用 - 因为电子邮件地址不只是一堆数字?
  • @Dominic 啊,我刚刚重新阅读了您的第二点,您对此也是正确的,但现在我注意到他实际上将电子邮件地址作为查询字符串包含在内,因此不会匹配反正。 @john:您的 URL 模式应该看起来像 r'^xEmailExists/' 并消除电子邮件参数到您的视图。如果您将电子邮件作为查询字符串传递,那么您将使用 request.GET['email'] 来访问它。
【解决方案2】:

正如多米尼克所说,问题出在你的urls.py,但我不确定他是否有正确的解决方案。

首先,将您的urls.py 修改为以下内容:

(r'^xEmailExists/$', 'hwa.website.views.root.xEmailExists'),

然后,在您的xEmailExists 视图中,您可以使用request.GET 获取电子邮件地址:

def xEmailExists(request):
    email = request.GET.get('email', '')
    # check if email exists and return...

这会将?email=test@example.com 从您的查询字符串中提取出来。如果'email' 不在查询字符串中,使用GET.get('email', '') 会返回一个默认值(空字符串),但如果您确定它会在那里,GET['email'] 也可以工作。

【讨论】:

    猜你喜欢
    • 2016-05-18
    • 2015-07-31
    • 2013-02-15
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 2011-12-07
    相关资源
    最近更新 更多