【问题标题】:Specific templates for flatpages in DjangoDjango 中平面页面的特定模板
【发布时间】:2009-11-08 03:08:18
【问题描述】:

是否可以为 Django 中的不同平面页面链接特定模板?

例如:

/about/    ->   templates/flatpages/about.html
/contact/  ->   templates/flatpages/contact.html

这是我所拥有的,但所有这些页面都指向 default.html 模板

url(r'^(?P<url>about/)$', 'django.contrib.flatpages.views.flatpage'),
url(r'^(?P<url>contact/)$', 'django.contrib.flatpages.views.flatpage'),
url(r'^(?P<url>feedback/)$', 'django.contrib.flatpages.views.flatpage'),

【问题讨论】:

    标签: django django-flatpages


    【解决方案1】:

    我不知道你有什么版本的 Django,但在 1.1.1 中,添加/编辑平面管理面板底部有“高级选项”链接(例如http://127.0.0.1:8000/admin/flatpages/flatpage/add/。在那里你可以启用 cmets,启用注册要求和更改模板。

    以编程方式,您可以:

    from django.contrib.flatpages.models import FlatPage
    my_flat_page = FlatPage.objects.get(title="example")
    my_flat_page.template_name = "/flatpages/example.html"
    my_flat_page.save()
    #or just:
    #from django.contrib.flatpages.models import FlatPage
    #FlatePage.objects.filter(title="example").update(template_name="/flatpages/example.html")
    #if you like one-liners
    

    【讨论】:

      【解决方案2】:

      当然!在按照说明 here 安装平面页面后,您可以覆盖任何给定平面页面的默认模板 (flatpages/default.html) - 具体而言,您可以自定义 FlatPage model 的实例(尤其是 template_name 字段,但不仅仅是那),或者像任何其他模型一样以编程方式,或者我相信在管理页面中。

      【讨论】:

      • 在管理员中是不可能的——我认为该功能已被删除。如何以编程方式执行此操作?
      • 获取您想要的平面页面(在 Flatpages.object 中搜索 title="about" 等),将其 template_name 属性设置为您想要的值(“flatpages/about.html”等),保存。正如我所说的,就像任何其他模型一样!
      猜你喜欢
      • 2016-02-19
      • 2010-12-10
      • 2023-03-15
      • 2018-01-08
      • 2016-03-10
      • 2017-08-31
      • 1970-01-01
      • 2014-11-16
      • 2011-05-26
      相关资源
      最近更新 更多