【问题标题】:url design in django-cmsdjango-cms 中的 url 设计
【发布时间】:2013-03-01 08:51:58
【问题描述】:

我正在使用 django-cms 来设计一个网站,到目前为止,我必须创建一个带有菜单栏的基本主页,例如 About UsProductsContact Us 等,

我已经完成了djangodjango-cms 的所有必要设置,激活了管理部分并且工作正常。

我创建了一个 Home Page template,其中包含 About UsProductsContact Us,并通过 django-cms admin 创建了一个名为 aboutus 的页面,并带有一个 slug about-us

现在我已经给出了那个 slug about-us ,它只是 About Us 菜单的锚标记中的一个 url,所以当我点击链接时它工作正常并将我重定向到页面 aboutus 与 url浏览器为http://localhost:8080/aboutus

但问题是,当我再次单击 aboutus 链接时,它会生成两次 url,就像 http://localhost:8080/aboutus/aboutus,我的意思是每次点击时,slug aboutus 都会附加到 url。

下面是我的代码

settings.py

TEMPLATE_CONTEXT_PROCESSORS = (
     .......
    'cms.context_processors.media',
    'sekizai.context_processors.sekizai',
)
CMS_TEMPLATES = (
    ('home.html', gettext('Home')),
    ('aboutus.html', gettext("About Us")),
    ('management_team.html',gettext('Management Team')),
)
.....
....

urls.py

from django.conf.urls.defaults import *
from django.contrib import admin
from django.conf import settings

admin.autodiscover()

urlpatterns = patterns('',

     url(r'^admin/', include(admin.site.urls)),
     url(r'^', include('cms.urls')),
)

home.html

{% load cms_tags sekizai_tags %}
{% load staticfiles %}
{% load staticfiles %}
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>{% block head %}{% endblock %}</title>
      {% render_block "css" %}
  </head>
  <body>
      {% cms_toolbar %}
        <div class="submenu">
            <a href="about-us">About Company Services</a><br />
            <a href="management-team">Our Management Team</a>
        </div>
        <a href="about-us" class="menu aboutus">About Us</a></div>
      {% render_block "js" %}
  </body>
</html>

以上是我的整体代码,其中home.html 显示一个主页,菜单如下 (通过使用一些 css 样式)

   About Us
        About Company Services 
        Our Management Team

所以当我点击链接About Us 时,生成的url 是http://localhost:8000/about-us/,当我们点击About Company Services 时,生成的url 是http://localhost:8000/about-us/about-ushttp://localhost:8000/about-us/about-us/our-management-team/,当点击Our Management Team 时。所以 url 是附加到前一个 url 而不是附加到 domain name

我已经使用 django-cms admin 中创建的模板创建了所有页面

   Page Name                slug

   About Us                 about-us
   About Company Services   about-us 
   Our Management Team      our-management-team 

那么上面的代码有什么问题,为什么url是附加到以前的url而不是附加到域?

如何从 django-cms admin 到 parent(About Us) 创建一个childs(About Company Services,Our Management Team )

其实我想在About Us页面下创建两个页面(About Company Services,Our Management Team ),我们如何在django-cms admin中实现这个

谁能告诉我django-cms中菜单的概念,我已经尝试并阅读了django-cms many many many times的文档但无法理解menus的概念所以接近SO

【问题讨论】:

  • 你的问题很复杂。您对 django-cms 菜单系统到底有什么不明白的地方? django-cms 中的菜单反映了您在管理员中的页面布局。因此,如果您有两个页面“公司服务”和“管理团队”嵌套在一般“关于页面”下,那么当您使用 {% show_menu ... %} 呈现菜单模板标签时,生成的 HTML 将反映该页面布局。
  • 例如 {% show_menu 0 0 %} 0 是什么,如果添加另一个 0 会怎样?
  • in {% show_menu 1 100 100 0 % } 这是什么意思?当数字被打乱时会发生什么? (实际上所有这些都在文档中提到,但无法准确地描述技术术语。。)
  • 这是我的实际模板代码pastebin.com/tWqm6pry

标签: python django url menu django-cms


【解决方案1】:

如果这是您在管理部分的页面布局 (/admin/cms/page):

- Home (level=0)
    - About Us (level=1)
        - About Company Services (level=2)
            - Foo Bar (level=3)
        - Our Management Team (level=2)
    - Some Other Section (level=1)
        - Some Sub Section (level=2)
    - ...

当您打印 {% show_menu A B C D %} 时,您正在呈现一个 ul 菜单,其中 A、B、C 和 D 是指定菜单配置的数字。

A = Start
B = End
C = Inactive
D = Active

所以{% show_menu 1 2 0 100 %}

  • A=1 表示从级别 1 开始导航,即不包括级别 0 的 Home
  • B=2 表示将导航渲染到第 2 级,即不包括 Foo Bar
  • C=0 表示对于非活动轨迹,显示 0 级别。因此,如果我们当前在About Us 页面上,我们将不会在Some Other Section 下方的菜单中看到任何链接(因为这是一条非活动路径),但我们仍会看到About Company...Out Management...(因为这是一个活动轨迹)
  • D=100 表示对于当前活动的轨迹,显示到 100 个级别(这就是我们看到上面提到的 About Company...Our Management 的原因)

所以结果是:

- About Us (level=1)
    - About Company Services (level=2)
    - Our Management Team (level=2)
- Some Other Section (level=1)

【讨论】:

  • 非常感谢,这真的很有帮助的解释......也意味着在我上面的 html 代码中我粘贴在备用 url 中,不需要为标签声明完整的成熟 html 代码?跨度>
  • 这是在哪里记录的?我找不到文档了吗?
【解决方案2】:

使用 {% show_menu %} 模板标签来呈现菜单。请务必阅读相关文档。

【讨论】:

  • 实际上,正如我上面提到的,我已经阅读了很多次文档,但我无法理解用法,所以终于找到了 SO,你能否将菜单标签示例代码添加到我上面的 html 代码中,以便我可以实际学习,我已经为此浪费了2天......
  • 在管理员(cms -> pages)中重新排序(拖放)页面,使其成为about_us的孩子。
  • 然后使用以下代码:
  • 这是我的实际模板代码pastebin.com/tWqm6pry 能否请您在上面的 html 代码中指出正确的方向?
猜你喜欢
  • 2013-06-04
  • 2023-03-24
  • 2014-02-25
  • 2013-05-09
  • 2013-09-29
  • 2012-11-16
  • 2012-03-28
  • 2013-02-09
  • 1970-01-01
相关资源
最近更新 更多