Python Django Flatpages踩坑篇
基础知识
要使用Flatpages,需要至少读完Django官方文档Tutorial 1-4,安装Django环境、了解manage.py一些基础的命令、了解url pattern等。
官方文档
Flatpages有官方的指导文档,但是跟着一步一步操作下来之后,却发现在自己的环境中是执行失败的。有很多需要注意的点,在文档中没有说明,或者是含糊其辞,让初学者一头雾水。
后面的内容主要以介绍官网文档的坑点为主,不会详细说明每一步具体操作。
坑点
-
需要在settings.py文件中的INSTALLED_APP部分中添加两个APP
- django.contrib.sites
- django.contrib.flatpages
这里一定需要添加sites这个APP,不然会失败。
-
文档中提示了要注意SITE_ID。这里是需要同样在settings.py文件中添加SITE_ID这个属性:
image.png
这里的site_id实际上是第一部添加的sites APP的object primary key。Flatpages model中有一个Foreign Key的引用关联到site上,所以这里要设置site id。而在启用sites app的时候,django会默认创建一条名字叫‘example.com’的site,所以如果创建一个‘localhost’的site时,site id就是2了。
-
在UrlConf中添加urlpatterns,官方文档用的是'pages/'。这步添加urlpatterns其实没问题,问题在于如果你添加后,用http://127.0.0.1:8000/pages/这个url去访问flatpages是会报错的。如果你查看一下flatpages.urls的定义就会发现,里面还有一层urlpatterns,定义的规则是'<path:url>',这里因为我是初学,也是看了半天不知其所以然,想不通url应该是什么。知道我打开了django自带的admin APP。
home
这个时候可以看到Home页面上多出来了Flat Pages和Sites两个APP可以管理数据,点进去sites就会发现有前面说到的‘example.com’这个site,那它的ID就是1。如果你在settings.py中设定了SITE_ID=1可就错了。接下来新建一个site叫‘localhost’,id自然是2。
flatpages
在Flat pages中可以看到需要设定URL字段的值,这里就是前面说的flatpages.urls中的urlpatterns的正确打开方式。注意开头和末尾的'/'都是必须的。同时在Sites中选择关联上localhost。 -
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware' 可以不添加。因为我没有继续深入的研究,只是初级功能的话不添加目前也没有影响。
-
最重要的一步,是在APP的templates路径下创建flatpages/about.html。如果你的page名称是别的如license,那就放license.html。Flatpages会读取这个html文件直接展示在页面上。
templates/flatpages/about.html
templates的设定文档在比较后面才提到,我刚一上手把installation看完就想直接打开flatpages看看效果,可想而知是不成功的。
总结
以上坑都踩过,基本flatpages就可以正常使用了。html页面中具体要放那些内容就自由发挥,各凭本事了。
感觉Flatpage在国内用的比较少吧,各大搜索引擎上可参考的资料都不多。而且因为初学,自己也摸不清问题出在哪里,只能乱投医。不过好在最后算是解决了。
下方是我参考过的资料,多少都提供了点帮助,略表感谢。
全栈一路坑之使用django创建博客
Stack Overflow