托管的django应用程序如何正确转换资源路径以匹配任何托管位置(/或/ test或/ testtest)?
让我试着解释一下我想要做什么。
我正在尝试编写一个有点可重复使用的django应用程序,我打算在多个项目中使用它。这个应用程序名为systemstatus
。
systemstatus
应用在“$ ^”下提供了一个页面,该页面提供了一个查询系统状态的简单界面。 systemstatus
应用程序以确定实际系统状态并在UI上报告。 systemstatus
应用提供了一个位置'^ service / $',它指向ajax调用处理程序。 我想知道这样做的理想方式是什么。我会说这也适用于应用程序内部捆绑的其他资源(样式表,图像)。
现在我正在使用request.path来确定目标路径应该是什么。然后将此路径作为参数传递给模板。但这种方法很快就会变得过于繁琐。
def system_status (request):
queryPath = request.path + "service/"
return render_to_response ('systemstatus.html', {'queryPath': queryPath})
我的页面模板如下所示:
function do_ajax () {
$.getJSON ('{{ queryPath }}', function (data) {
$("#status").html (data.status);
});
}
谢谢!
答案 0 :(得分:2)
您不应该像这样对您的网址进行硬编码,而是使用reverse代替!
Django还有a built-in template tag来反转网址。所以你可以做类似
的事情function do_ajax () {
$.getJSON ('{% url path.to.my_ajax_view %}', function (data) {
$("#status").html (data.status);
});
}
直接在你的模板中!
您也可以将ajax请求直接发送到当前页面的网址,然后选中if it is an ajax request:
def my_view(request):
if request.is_ajax():
# generate response for your ajax script
else:
# generate the response for normal request
# (render template of your page)