【发布时间】:2011-06-10 06:00:12
【问题描述】:
所以我对 Django 和 Javascript(我正在使用 JQuery)都很陌生,我想知道我是否正在做一个 hack,或者是否有更巧妙的方法可以将客户端显示的数据库 ID 发送到 django 服务器端.这是我的过程:
我有一个 dataTable (http://datatables.net),我使用 bProcessing 选项显示数据行,以使用 AJAX 从数据库中检索记录。我的 urls.py 中的 URL 类似于:
url(r'^assets/activitylog/(?P<cid>.*)$', views.getActivityTable_ajax, name="activitylog_table"),
我的 dataTable ajax 相关代码类似于:
"sAjaxSource": "/assets/activitylog/" + getIDFromHTML(),
Django 视图使用的 javascript 函数 getIDFromHTML() 抓取 <cid> 的地方很简单:
function getIDFromHTML(){
// Simply return the text in the #release_id div element from the HTML
return $("#release_id").html();
};
这对我来说似乎是“hacky”的部分。我在我的模板代码中插入了我在数据表 URL 中使用的数据库 ID(在 css 中有 display:none),这样我就可以将它传递回视图。其中大部分是必需的,因为除非代码嵌入到 HTML 本身中,否则不能在 javascript 代码中使用 django 模板标签,我不会(也不会)这样做。
我发现的唯一另一件事是更改 URL 以摆脱传入的参数:
url(r'^assets/activitylog', views.getActivityTable_ajax, name="activitylog_table"),
并将视图代码更改为:
def getActivityTable_ajax(request):
"""Returns the activity for a given pid from HTTP GET ajax reqest"""
pid = int(urlparse.urlparse(request.META['HTTP_REFERER']).path.split('/')[-1])
# rest of view code here...
因为我需要的 id 在这个引用网址的末尾。
这样我就不必胡思乱想地将隐藏的数据库 ID 嵌入 HTML 并通过 ajax 将其传递回表格填充视图代码。
以这种方式在请求对象中使用HTTP_REFERER可以吗?我是否以完全错误的方式处理这件事?
提前致谢!
【问题讨论】:
标签: django jquery datatables