【问题标题】:How to use django-sitetree?如何使用 django-sitetree?
【发布时间】:2011-01-22 08:01:48
【问题描述】:

我正在尝试使用django-sitetree,但我不明白如何执行第 3 步:

“转到 Django 管理站点并添加一些树和树项。”

如何在管理面板中创建站点树?我相信第一步是为您要添加的“站点树”选择一个别名。

下一步是添加“站点树项”。在此页面上,您必须选择父级、标题、网址。考虑到我的应用程序是动态的,具有像 localhost:8000/categoryname/entryname 这样的 url 结构,我该如何选择 url?

顺便说一下,我正在尝试在我的模板中添加面包屑。

【问题讨论】:

    标签: django navigation breadcrumbs


    【解决方案1】:

    创建一棵树:

    1. 转到站点管理面板;
    2. 点击“站点树”附近的+添加;
    3. 输入站点树的别名,例如'主树'。
      您将在模板标签中通过此别名来处理您的树;
    4. 推送“添加站点树项”;
    5. 创建第一个项目:

      父项:因为它是没有父项的根项目。
      标题:让它成为“我的网站”。
      URL : 这个 URL 是静态的,所以放在这里 '/'。

    6. 创建第二个项目(该项目将处理您的“类别名称/条目名称”中的“类别名称”):

      家长:从第 5 步中选择“我的网站”项目。
      标题:在此处输入“类别 #{{ category.id }}”。
      URL: 将命名 URL 'category-detailed category.name'。
      在“其他设置”中:选中“URL as Pattern”复选框。

    7. 创建第三个项目(该项目将处理您的“类别名称/条目名称”中的“条目名称”):

      家长:从第 6 步中选择“类别#{{ category.id }}”项目。
      标题:将“条目#{{条目”放在这里。 id }}'。
      URL: 将命名 URL 'entry-detailed category.name entry.name'。
      在“其他设置”中:选中“URL as Pattern”复选框。

    8. 将“{% load sitetree %}”放入您的模板中即可访问站点树标签。
    9. 将 '{% sitetree_menu from "maintree" %}' 放入模板以呈现菜单。
    10. 将 '{% sitetree_breadcrumbs from "maintree" %}' 放入模板以呈现面包屑。

    第 6 步和第 7 步需要澄清一下:

    • 在标题中,我们使用 Django 模板变量,这将像在您的模板中一样被解析。

      例如:您为“categoryname”(我们称之为“detailed_category”)创建视图以将类别对象传递给模板 作为“类别”变量。假设类别对象具有“id”属性。 在您的模板中,您使用 '{{ category.id }}' 来呈现 id。我们只是 步骤 6 中的站点树项也是如此。

    • 在 URL 中,我们使用 Django 的命名 URL 模式 (documentation)。这几乎与在模板中使用 Django 'url' 标记相同。

      步骤 6、7 的 urls 配置应该包括:

      url(r'^(?P\S+)/(?P\S+)/$', 'detailed_entry', name='entry-detailed') ,
      url(r'^(?P\S+)/$', 'detailed_category', name='category-detailed'),

      因此,将第 7 步中的“entry-detailed category.name entry.name”放入 URL 字段中,我们告诉 sitetree 将该站点树项与名为“entry-detailed”的 URL 相关联,并将 category_name 和 entry_name 参数传递给它。

    我希望这个描述能填补文档空白 %)

    【讨论】:

    • 哇!我没想到会得到如此全面的回应。非常感谢。
    • @idlesign 在示例中,URLconf 中的entry_name 和URL 字段中的entry.name 是否相关?如果是这样,这种关系是如何建立的?我没有看到这两者是如何联系起来的。
    • @Romildo entry_name 将作为参数传递给detailed_entry 视图函数。该示例假设在该视图中生成一个模型,例如,Entry 模型并将其进一步传递给 entry 变量中的模板。因此entry.name调用地址nameentry对象的属性。
    • @idlesign 我不清楚 URL 字段中所需的语法:从示例中输入 url(r'^(?P<category_name>\S+)/$', 'detailed_category', name='category-detailed') 会触发“验证失败”警告。我做错了什么?
    • @koi-feeding 请查看 Django 文档 - docs.djangoproject.com/en/1.1/topics/http/urls/… URL 字段与命名的 url 模式无关。
    猜你喜欢
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    相关资源
    最近更新 更多