Django-CMS中的URL设计
我正在使用django-cms来设计一个网站,目前我需要创建一个基本的主页,上面有像关于我们
、产品
、联系我们
这样的菜单。
我已经完成了django
和django-cms
的所有必要设置,激活了管理部分,并且一切运行得很好。
我创建了一个主页模板
,里面包含了关于我们
、产品
、联系我们
,并通过django-cms的admin
创建了一个名为aboutus
的页面,slug为about-us
。
现在我把这个slugabout-us
放在关于我们
菜单的链接里,所以当我点击这个链接时,它能正常工作,并把我重定向到页面aboutus
,浏览器中的网址是http://localhost:8080/aboutus
。
但问题是,当我再次点击aboutus
链接时,它生成的链接变成了两次,也就是http://localhost:8080/aboutus/aboutus
,也就是说每次点击时,slugaboutus
都会被加到网址后面。
以下是我的代码
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
所以当我点击关于我们
链接时,生成的链接是http://localhost:8000/about-us/
,而当我点击关于公司服务
时,生成的链接是http://localhost:8000/about-us/about-us
,再点击我们的管理团队
时,链接变成http://localhost:8000/about-us/about-us/our-management-team/
。所以网址是不断加在之前的网址后面,而不是加在域名
后面。
我通过django-cms的管理界面创建了所有页面,使用的是创建的模板
Page Name slug
About Us about-us
About Company Services about-us
Our Management Team our-management-team
那么上面的代码有什么问题呢?为什么网址会加在之前的网址后面,而不是加在域名后面?
如何在django-cms的管理界面中创建子页面(关于公司服务、我们的管理团队)
,并将它们归属于父页面(关于我们)
?
其实我想在关于我们
页面下创建两个页面(关于公司服务、我们的管理团队)
,我们该如何在django-cms的管理界面中实现这一点?
有没有人能告诉我django-cms中菜单的概念,我已经尝试过并阅读了django-cms
的文档很多次,但还是无法理解菜单
的概念,所以才来这里询问。
2 个回答
使用{% show_menu %}这个模板标签来显示菜单。记得去看看相关的文档,了解更多信息。
如果这是你在管理后台的页面布局(/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...
和Our 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)