带有主干路由器和 django url 的 DRY url?
Posted
技术标签:
【中文标题】带有主干路由器和 django url 的 DRY url?【英文标题】:DRY url with backbone router and django urls? 【发布时间】:2014-06-07 20:20:45 【问题描述】:在 django 中,% url 'url_name' %
或 obj_instance.get_absolute_url
用于 url,实际 url 定义在 urls.py 中
我最近开始使用骨干路由器,它的形式是
routes:
'..some/url/path/:param_name/': 'func_name'
是否可以在骨干路由器中使用django的url相关功能来保持url的干性?
编辑
我在主干路由中使用the/whole/relative/path/from/root
。
这是骨干网的坏习惯吗? (这是我第一次使用路由器。)
之所以需要绝对路径,是因为我想在多个应用程序中进行路由,如下所述。
我有 3 个应用程序显示以下内容。
-
所有音乐列表 (/forum)
专辑中所有音乐的列表 (/album/:album_id)
音乐详情 (/album/:album_id/music/:music_id)
如果用户进入#1,通过点击音乐,他可以转到#3。 从#3,他可以去#2或#1。
【问题讨论】:
【参考方案1】:据我了解,在 Django 中,您定义了紧跟在域之后的 url。在主干路由器中,您定义“#”标签之后的 url。因此,例如,如果您输入两个不同的域而没有任何参数并调用相同的骨干路由器,则它们都将被捕获为空 url。
var Router = Backbone.Router.extend(
routes:
"": "defaultFunc" //nothing after # (it doesn't care about the url before that)
"posts/:id": "getPost" // #posts/12
);
最后,我认为每个人都必须做好自己的工作。 Django 用于服务器端 url 及其参数,以及用于客户端的主干。
【讨论】:
感谢您的输入,我使用“the/whole/absolute/path”作为主干路由,这是一个不好的做法吗?我已经更新了问题。 它有效吗?取决于您希望如何在 Django 和 Backbone 之间分配工作。如果你输入: /album/mydisc/#song/mySong -> /album/mydisc 的模板将加载 Django 模板引擎,然后 Backbone 将为歌曲做工作。如果您想将所有内容委托给主干,您应该输入:#album/mydisc/song/mySong 我可以正常工作,除了一种情况“转到#1 #3”和“返回按钮到#1”不显示#1 页面。我在服务器 url 中也有所有三个 url。以上是关于带有主干路由器和 django url 的 DRY url?的主要内容,如果未能解决你的问题,请参考以下文章