Javascript Django--为数据库对象的网页生成URL

Javascript Django--为数据库对象的网页生成URL,javascript,python,django,curl,Javascript,Python,Django,Curl,我目前正在从事一个Django项目,该项目允许用户上传一个文件(即.dat、.json或.tar.gz),然后将其转换为具有各种关系的适当数据库对象。可以使用web浏览器上的界面或通过curl将文件上载到相应的REST API端点。该网站目前是一个利用Bootstrap.js的单页网站。浏览器中的URL不会更改用户是否位于主页(其中显示最近的上载)或单击其中一个上载的“黑盒”(“黑盒”是由上载文件形成的主要数据库对象)。点击一个黑盒,用户将进入黑盒内“数据点”列表的页面 我现在需要的是每个bla

我目前正在从事一个Django项目,该项目允许用户上传一个文件(即.dat、.json或.tar.gz),然后将其转换为具有各种关系的适当数据库对象。可以使用web浏览器上的界面或通过
curl
将文件上载到相应的REST API端点。该网站目前是一个利用Bootstrap.js的单页网站。浏览器中的URL不会更改用户是否位于主页(其中显示最近的上载)或单击其中一个上载的“黑盒”(“黑盒”是由上载文件形成的主要数据库对象)。点击一个黑盒,用户将进入黑盒内“数据点”列表的页面

我现在需要的是每个blackbox页面都有自己的URL,当用户或脚本使用
curl
上传blackbox时,可以在响应中返回URL。这就是我想在URLconf中使用的模式:

r'^bb/(?P<bb_id>[0-9]+)/$'
但是,尽管我尝试了不同的Javascript文件路径,但像这样尝试使用
$.getScript
还是会出现404个错误


另外,为了防止这是这个问题的一个重要细节,前端使用Clusterize.js来帮助加载数据点,因为黑盒通常至少有几千个数据点

制作类似这样的东西的关键之一是在我们的
home.html
中使用正确的模板标记,我们将其重命名为
base.html
,以便更详细地描述模板的用途<代码>URL.py也被修改,以便两个不同的URL模式将映射到
视图中的相同
基本视图
视图;这两种模式是默认主页的“空白”模式(即
r'^$'
),以及查看特定黑盒的模式(
r'^blackbox/(?P[0-9]+)/$)
)。根据URL模式中是否有
bb_id
(黑盒id),将呈现不同的视图。如果没有,将呈现最近上载的默认主视图;否则,将呈现该特定
bb_id
的数据点。在
base.html
模板中,使用
if
template标签查看是否存在
bbu id
;如果是这样,将调用JavaScript函数
display\u bb
,该函数接受
bb\u id
以了解要显示的数据点。否则,将调用函数
display\u 10\u recent\u blackbox


另一个问题是发送包含信息的响应,这些信息可用于查找和查看刚刚上传的黑盒。最初,主数据库插入函数insertBlackbox数据库将首先创建Blackbox模型实例,然后用上传文件创建的数据点填充它。但是,由于响应是在调用该函数之前发送的,因此有必要重构上载和插入代码,以便首先创建blackbox实例,使其ID成为响应的一部分。然后将ID传递给不同的上载函数(基于文件类型),每个上载函数最终调用
InsertBlackbox数据库
,该函数现在根据传递给它的ID定位Blackbox实例,然后继续创建和插入数据点

到目前为止你试过什么?你能写些代码让我们更好地理解这个问题吗?我不确定我能理解。这是客户端的问题吗?您不知道如何在单页应用程序中更改URL?或者当有人在浏览器中键入URL时,您不知道如何在服务器端处理?@freakish我认为我的问题是前者,我不知道如何在单页应用程序中更改URL。
$.getScript('blackboxes.js', function() { //blackboxes.js is the Javascript from home.html that I copied and pasted--hacky, I know
    display_points({{ bb_id }});
})