【发布时间】:2016-04-20 06:14:32
【问题描述】:
我目前正在开发一个 Django 项目,该项目允许用户上传文件(即 .dat、.json 或 .tar.gz),然后将其转换为具有各种关系的适当数据库对象。可以使用 Web 浏览器上的界面或通过 curl 将文件上传到适当的 REST API 端点。该站点目前是一种使用 Bootstrap.js 的单页站点。无论用户是在主页上(显示最近上传的内容)还是点击上传的“黑盒”之一(“黑盒”是由上传文件形成的主数据库对象),浏览器中的 URL 都不会改变。单击黑盒会将用户带到黑盒内的“数据点”列表的页面。
我现在需要的是每个黑盒页面都有自己的 URL,当用户或脚本使用 curl 上传黑盒时,可以在响应中返回该 URL。这是我想在 URLconf 中使用的模式:
r'^bb/(?P<bb_id>[0-9]+)/$'
bb 是“黑盒”的缩写。当现在每个黑盒页面和主页都具有相同的根 URL(开发中,localhost:8000)时,如何系统地使每个黑盒页面都有自己的 URL,遵循这种模式?
我在这样的事情上做了一些尝试(很可能是被误导了)。我尝试过的一件事是使用extends 模板标签为黑盒页面制作单独的模板。前端 Javascript 有一个函数 display_points,它接受一个黑盒 ID 并呈现数据点列表,所以我尝试了各种 hacky 方法从黑盒页面模板中调用该函数(在文件 home.html 中),但是没有什么是成功的。我希望能起作用的一件事是使用 jQuery $.getScript 来做这样的事情:
$.getScript('blackboxes.js', function() { //blackboxes.js is the Javascript from home.html that I copied and pasted--hacky, I know
display_points({{ bb_id }});
})
但尽管尝试了 Javascript 文件的不同路径,但我尝试像这样使用 $.getScript 时不断收到 404 错误。
另外,为了防止这是这个问题的重要细节,前端使用 Clusterize.js 来帮助加载数据点,因为黑盒通常至少有几千个数据点。
【问题讨论】:
-
到目前为止你尝试过什么?你能放一些代码,以便我们更好地理解这个问题吗?
-
我不确定我是否理解。这是客户端的问题吗?您不知道如何在单页应用程序中更改 URL?或者你在浏览器中输入网址时,服务器端不知道如何处理?
-
@freakish 我认为我的问题是前者,我不知道如何在单页应用程序中更改 URL。
标签: javascript python django curl