这是一个简单的django应用程序,可以直接从模板发布一些页面

emencia-django-staticpages的Python项目详细描述


简介

这是一个简单的django应用程序,可以直接从模板发布一些页面。

是的,这只是为了使用django.views.generic.TemplateView,但是这个应用程序将有助于管理许多页面并支持django站点地图。

安装

在“设置”中将其添加到已安装的应用程序中:

INSTALLED_APPS = (
    ...
    'staticpages',
    ...
)

用法

所有静态页条目必须定义三个参数:

  • 要与url匹配的regex模式;
  • 要使用的模板路径;
  • URL名称,必须是唯一的;

原始方式

在设置中:

STATICPAGES = [
    ...
    (r'foo/$', "foo/index.html", 'foo-index'),
    (r'foo/part1/$', "foo/part1.html", 'foo-part1'),
    (r'foo/part2/$', "foo/part2.html", 'foo-part2'),
    ...
]

然后在你的urls.py

url(r'^staticpages/', include('staticpages.urls.include')),

如果您想用django站点地图在sitemap.xml中发布它们,那么您必须在urls.py

from staticpages.sitemaps import StaticPageSitemapBase, StaticPageEntryTemplate

class MypagesSitemap(StaticPageSitemapBase):
    page_entries = [
        StaticPageEntryTemplate(url_name='mypage-foo', template_name='foo.html'),
    ]

# Enabled sitemaps
sitemaps = {
    # For Prototypes
    'mypages': MypagesSitemap,
}

urlpatterns += patterns('django.contrib.sitemaps.views',
    url(r'^sitemap\.xml$', 'sitemap', {'sitemaps': sitemaps}),
)

半自动方式

此方法使您能够根据需要装载不同的静态页映射,与使用任何设置名称存储页映射的原始方式相反。如果需要多个分隔的页映射,这将非常有用。

在设置中:

FOO_STATICPAGES = (
    (r'foo/$', "foo/index.html", 'foo-index'),
    (r'foo/part1/$', "foo/part1.html", 'foo-part1'),
    (r'foo/part2/$', "foo/part2.html", 'foo-part2'),
)

BAR_STATICPAGES = (
    (r'bar/$', "bar/index.html", 'bar-index'),
    (r'bar/part1/$', "bar/part1.html", 'bar-part1'),
    (r'bar/part2/$', "bar/part2.html", 'bar-part2'),
)

然后在你的urls.py

from django.conf import settings
from staticpages.urls import loaders

urlpatterns = patterns('', *loaders.mount_staticpages(*settings.FOO_STATICPAGES)) + urlpatterns
if settings.DEBUG:
    urlpatterns = patterns('', *loaders.mount_staticpages(*settings.BAR_STATICPAGES)) + urlpatterns

注意settings.DEBUG的用法,这是一个可以使用多个分隔页映射的示例,bar页将不会在生产环境中发布,但foo页将被发布。

对于django站点地图的sitemap.xml,您必须在urls.py

from django.conf import settings
from staticpages.sitemaps import StaticPageSitemapAuto

class FooSitemap(StaticPageSitemapAuto):
    pages_map = settings.FOO_STATICPAGES

class BarSitemap(StaticPageSitemapAuto):
    pages_map = settings.BAR_STATICPAGES


# Enabled sitemaps
sitemaps = {
    'foo': FooSitemap,
    'bar': BarSitemap,
}

urlpatterns += patterns('django.contrib.sitemaps.views',
    url(r'^sitemap\.xml$', 'sitemap', {'sitemaps': sitemaps}),
) + urlpatterns

静态页面视图

还要注意,每个页面都将使用视图staticpages.views.StaticPageView。这只是来自django.views.generic.TemplateView的继承,它将包含一个变量page_map。此变量包含已用页映射。您可以在模板中使用它,如下所示:

<ul>{% for url_pattern,template_name,url_name in page_map %}
    <li><a href="{% url url_name %}">{{ template_name }}</a></li>
{% endfor %}</ul>

这将列出页面地图中所有可用的静态页面,有助于自动浏览它们的索引。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何忽略缓冲读取器中在“”之后的行的其余部分,或行上的特定字符?   java在db中创建空对象或稍后保存   java如何实现UI无关的后台工作任务   java未能在Android中从BaseAdapter扩展的类中启动Tactivity?   java斐波那契迭代移动数组[]   安卓从文件读取提供了java。木卫一。StreamCorruptedException:无效的流标头:73720027   java计算矩形中的六边形数?   仅使用Java 1.5(或更早版本)读写XML   java如果所有元素都以相同的bucked结尾,为什么要进行大小调整?   java Apache POI Excel在xx中发现无法读取的内容。xlsx   swing我可以在普通java应用程序中使用GWTGUI吗?   来自自定义Java客户端的http删除请求的行为与邮递员不同   运行批处理文件时,java当前目录无效   使用TypeReference将java字符串转换为ArrayList<STRING>   documentlistener突出显示所有匹配词Java