Django using flatpages

通过使用FlatPage添加page ,例如 about me ,about the web,这些页面都是可通过django.admin管理界面编辑的,并且不需要重新创建一个新的app项目
Two reference courses:
http://me.iblogc.com/2015/09/08/django%E5%86%85%E7%BD%AE%E7%9A%84flatpages%E5%BA%94%E7%94%A8/

https://simpleisbetterthancomplex.com/tutorial/2016/10/04/how-to-use-django-flatpages-app.html

注意:

  • 配置URL时,应在项目根目录中的urls.py中配置
  • 如果没有设置SITE_ID的话记得要设置,否则django会找不到匹配的页面

我使用的url配置是

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'',include('blog.urls')),
    url(r'',include('comments.urls')),
    url(r'^about/$', views.flatpage,{'url':'/about/'},name='about'),
]

使用了hardcoded url,所以在admin设置flatpage时,记得把url一项设置为/about/,否则django将无法找到对应的页面。
然后在默认的templates/flatpages/default.html中导入相关title,content等,上面的参考教程已经讲得非常详细了。
由于要实现markdown管理about页面功能,我还通过自定义标签,定义了一个filter

###blogproject/blog/templatetags
import markdown
register=template.Library()
@register.filter(name='mdfilter')
def mdfilter(value):
    value=markdown.markdown(
    value,
    extensions=[
        'markdown.extensions.extra',
        'markdown.extensions.codehilite',
        'markdown.extensions.toc',
    ])
    return value    

然后在模版中添加相关内容

{{page.content|mdfilter|safe}}

注意在filter最后添加上safe以防止Django自动转义html,功能就实现了

你可能感兴趣的:(Django using flatpages)