【问题标题】:DRY url with backbone router and django urls?带有主干路由器和 django url 的 DRY url?
【发布时间】: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 个应用程序显示以下内容。

  1. 所有音乐列表 (/forum)
  2. 专辑中所有音乐的列表 (/album/:album_id)
  3. 音乐详情 (/album/:album_id/music/:music_id)

如果用户进入#1,通过点击音乐,他可以转到#3。 从#3,他可以去#2或#1。

【问题讨论】:

    标签: django backbone.js


    【解决方案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。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 2011-04-02
    • 2013-02-15
    • 2016-11-14
    • 1970-01-01
    相关资源
    最近更新 更多