【问题标题】:Calling a Django URL from JavaScript从 JavaScript 调用 Django URL
【发布时间】:2011-04-16 23:05:16
【问题描述】:

*为了清楚起见编辑了这个问题*

我有一个 Django 模板,里面有一个 flash 对象。模板本身继承自主模板,位于名为 info 的块中。一切正常!

当 Flash 对象被点击时,它会调用一个 JavaScript 回调函数,并在一个单独的 js 文件中带有一个参数。在这个函数中,我可以使用类似

的东西加载另一个 Django 模板
  function myCallBack(param){
        location.href = 'crc_region_cities' // (Django url). 
  }

我想知道的是如何将参数 param(它是一个字符串)传递给该 URL,以便同名的视图函数:def crc_region_cities 将其拾取并执行适当的查询..

额外信息:

新 URL 调用呈现模板的视图,该模板再次继承与前一个模板相同的主模板并驻留在同一块...信息中。

有没有更好的方法来做到这一点...??请记住,我的 flash 对象调用带有字符串参数的 javascript 回调函数,因此我必须以某种方式从那里操纵到新模板,同时将字符串参数传递给 URL。在下面的代码中你可以看到视图函数的第二个参数叫做region。这是我需要通过javascript函数传入的参数。

 THE URL (r'^crc_region_cities/?$', 'crc_region_cities'),

 The View

 def crc_region_cities(request, region):
     cities = City.objects.filter(region__exact=region)
     return render_to_response('crc/crc_region_cities.html', {'cities': cities}, context_instance=RequestContext(request))

非常感谢

【问题讨论】:

  • 你到底错过了什么? javascript?
  • 不,我有一个文件中的 JavaScript...一个名为 flashback 的函数,当它被单击时从 flash 对象中调用。如上所述,我想要做的是调用(从 JavaScript 闪回函数中)上面的 Django URL,该 URL 调用加载在 render_to_response 调用中指定的模板的视图...
  • 抱歉,是的,我需要 Javascript 来拨打电话...

标签: javascript django django-urls


【解决方案1】:

通常最好不要自己raw AJAX,因为所有浏览器问题。我建议为此使用 jQuery(以及许多其他东西),因为它已经处理了所有的怪异问题。

查看jQuery AJAX API page,特别是查看 jQuery.get() 和 jQuery.post() 以了解传递参数的方式。

观察:我没有在您分配给 href 的字符串上看到前导“/”,这意味着它与页面的原始 URL 相关。这很容易引起问题。请记住,带有 Firebug 扩展的 Firefox 是您调试 AJAX 内容时的好朋友。运行您的页面并查看标有Console 的选项卡。如果它报告错误,我不会感到惊讶。

另一件值得关注的事情:jQuery taconite plugin 是我遇到过的最甜蜜的 AJAX 扩展之一。看看吧。

【讨论】:

    猜你喜欢
    • 2016-06-10
    • 2011-06-15
    • 2016-09-15
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多