DPress项目地址: https://github.com/vicalloy/DPress
DPress是我用Django写的一个博客系统,支持使用MarkDown语法进行博客的书写。这里将就系统的配置,模板定制修改,以及如何创建自己的模板给个简要的指南。由于系统使用Django开发,使用者最好能有一定的Django基础。
使用Django的开发服务器将系统跑起来
- clone DPress的代码库(git://github.com/vicalloy/DPress.git)
- 运行scripts/create_env.py,该脚本将为你创建python虚拟环境,并自动安装相关依赖包。
- 执行scripts/env.bat(. scripts/env.rc),进入刚创建的python虚拟环境。
- %mg%($mg in linux) 是 “python manage.py ” 的快捷方式,用于方便的执行Django命令。
- %mg% syncdb
- %mg% migrate
- %mg% runserver
- DPress Admin http://127.0.0.1:8000/admin/
- DPress http://127.0.0.1:8000/
配置
- 复制 sites /settings/pre.sample 为 pre.py 。修改其中的SETTINGS设置,确定使用哪个配置(默认可选production/dev)。
- 复制 sites /settings/local.sample 为 local.py 。并修改相关配置。
- DISQUS_SHORTNAME以及GOOGLE_ANALYTICS_CODE这两个参数需要在正确设置后,DISQUS的评论功能以及GOOGLE ANALYTICS才可正常生效使用。
模板的配置与修改
- DPress自带的模板在 sites/dpress/templates/ 目录。自定义模板放在 sites/templates/ 目录。系统将自动优先使用自定义模板目录的模板,实现对模板的重写。
- dpress/include/footer.html 为页面的底部。可重写该文件,修改版权增加定义链接等。
- dpress/include/sidebar.html 页面的侧边栏。重写该文件对侧边栏内容进行配置。
- dpress/widgets/ 该目录为侧边栏小工具的模板。如果你需要创建自定义的侧边栏工具,请遵守约定将小工具模板放到该目录。
- dpress自带的静态资源文件放在 sites /dpress/static/ 目录。自定义的静态资源文件放在 sites/static/ 目录。
- 静态资源目录中 /dpress/themes/ 为主题目录。当前的默认主题为 default 。你可创建一个新文件夹用于存放你的新主题。
- 重写 dpress/include/base_style.html 使用新主题的css文件。
按照你的说明跑了下。有个疑问
为何要在 sites/settings/base.py 中将
#ADMIN_MEDIA_PREFIX = ‘/static/admin/’
这个注释掉?
我runserver后 会提示
AttributeError: ‘Settings’ object has no attribute ‘ADMIN_MEDIA_PREFIX’
取消了这个注释后正常,但是页面的 css 均无法找到。只能看到没有css的页面。
后台一直报,缺少500.html 是没有加这个模板吧。
会不会是你的Django版本不对。
DPress需要使用Django1.4。
如果你使用 scripts/create_env.py 创建的虚拟环境应当不会出现这个问题。
我是用的 create_env.py 创建的虚拟环境。 这个脚本会下载 django >= 1.4
所以他给我装了 django 1.4.1
难道是新版本的问题?
就出错提示来看,应当是Django版本太低了。
你看看是否是由于什么原因,导致使用了老版本的django。
你可以参考一下相关文档:https://docs.djangoproject.com/en/dev/ref/settings/#admin-media-prefix
原来是因为没有配置好 pre.py 文件, 默认指向了 production
导致了不断的提示
TemplateDoesNotExist: 500.html
现在可以用了, 很赞哦。
最近要买个vps,搭建个博客,因此用到了博主的dpress,每个人的想法不同,需求也不一样,我肯定会修改博主的源码的,修改后会将源码开源,并会发给博主。
希望博主就在vps下部署django环境给写建议。
我初步打算web服务器用nginx,后面的还没想好,希望博主给些建议和资料。
博主的/dpress下urls.py这样写是什么意思?
urlpatterns = patterns(”,
11 url(r’^$’, views.index, name=’dpress_index’),
12 url(r’^a/(?P\d{4})/(?P\d{1,2})/$’, views.index, name=’dpress_month_archive’),
13 url(r’^tags/(?P[-\w]+)/$’, views.index, name=’dpress_tag’),
14 url(r’^post/(?P\d{4})/(?P\d{2})/(?P[-\w]+)/$’,
15 views.post, name=’dpress_post’),
16 url(r’^latest/feed/$’, LatestDPressPostFeed(), name=”dpress_feeds”),
17 )
这里第三个参数name是干什么用的?
url 的问题参考 Django官方文档 https://docs.djangoproject.com/en/1.4/topics/http/urls/#url
大多的常规问题都是可以通过Django的官方文档或google找到答案的。
我目前采用的是apache+wsgi方式进行部署的。wsgi脚本可以在deploy\dj_scaffold.wsgi找到。
如果你采用nginx可以自行google相关资料(关键字 django nginx)。DPress作为一个Django项目,部署方式和其他的Django项目不会有什么太大的区别。
好的,Thanks,正在学习修改中…
我再后台管理界面写英文文章没事,一写中文就不行了,显示如下信息:
Warning at /admin/dpress/post/add/
Incorrect string value: ‘\xE4\xBD\xA0\xE5\xA5\xBD…’ for column ‘title’ at row 1
博主遇到没?
请问这个是数据库的事还是django的问题?
数据库字符集如下:
mysql> status
————–
mysql Ver 14.14 Distrib 5.5.24, for debian-linux-gnu (i686) using readline 6.2
Connection id: 36
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ”
Using delimiter: ;
Server version: 5.5.24-0ubuntu0.12.04.1 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 2 min 59 sec
Threads: 1 Questions: 124 Slow queries: 0 Opens: 351 Flush tables: 1 Open tables: 86 Queries per second avg: 0.692
————–
mysql> show variables like ‘collation_%’;
+———————-+—————–+
| Variable_name | Value |
+———————-+—————–+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+———————-+—————–+
3 rows in set (0.00 sec)
mysql> show variables like ‘character_set_%’;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
8 rows in set (0.00 sec)
mysql>
mysql> use zn;
Database changed
mysql> create talbe a_table(b varchar(255) not null);
mysql> insert into a_table values(‘北京’);
Query OK, 1 row affected (0.05 sec)
mysql> select * from a_table;
+——–+
| b |
+——–+
| 北京 |
+——–+
1 row in set (0.00 sec)
这个我找了半天还是没发现问题出在哪里,希望博主能解答下。
ok,问题已经解决,mysql改过字符集后,需要删除数据库,然后从新python manage.py syncdb后就可以了。
依然存在的问题:
一:直接从网页上复制内容到编辑器,乱…
二;按你说的从网页上先复制到记事本再到编辑器,还是乱…
求解决方法?
这个是我用的Markdown编辑器的问题。这个编辑器有些bug。
你可以修改文件 sites/dpress/admin.py 注释掉其中的
models.TextField: {‘widget’: EpicEditorWidget},
这样可以将编辑器恢复成普通的编辑框。
ok,明白,这是去除了EplicEditorWidget这个插件了,但是MarkDown的语法?
说实话,我以前学的都是linux运维方面的,前段时间刚开始学习python,然后是django,现在又到了css。
对于python和django这个我学起来没什么问题,毕竟资料还是不少的。但是这个web前台的东西,html,css,js,博主能否给点经验该怎么学?
ps:今天刚买了本 《css禅意花园》
请问下博主有没有长期更新的打算呢。
《css禅意花园》对你来说可能太难了些。
你可以先去http://www.w3school.com.cn/看看其中的
[HTML教程][HTML DOM 教程][JavaScript 教程]
多用用就熟悉了
主要功能已经完善了,以后应当不会有什么大的更新。
如果有bug或是有人提出新需求会进行修正。
谢谢博主,我现在就是一边看代码一边在www.w3school.com.cn上查手册了。
新需求,那我说两个吧,也是我打算改进的地方:
一:编辑器问题,能否考虑象51cto,csdn那样,调用一下网页编辑器,去除Markdown。
二:缺少和博主这个wordpress上文章分类的栏目,就是相册,足迹,留言板,关于我…这行,当然这要视个人情况而定。
其实,我感觉就目前这样也很好了,其他功能可以谁用谁加,毕竟一个模板不能适应所有的人。
+ 可以直接使用django-tinymce实现WYSIWYG编辑器。不过要同时支持html和markdown会增加系统的复杂度,所以DPress不会内置WYSIWYG编辑器。
+ 文章分类考虑增加
+ About等定制Page功能通过flatpages实现,模板上只要添加相应的链接就可以了。演示站点上的About Me页面就是这样做的。注:参考 https://docs.djangoproject.com/en/dev/ref/contrib/flatpages/
+ 要比较好的支持相册功能还比较花功夫,而且有些脱离博客的本来目的,所以没有添加相册的计划。
好的,正在学习css,js中,遇到问题,再向博主请教…
哪位大哥指导下,在这一步时
python manage.py syncdb
为什么,一直报错,几乎什么module 全没有,例如这样:
Error: No module named debug_toolbar
你是否是参考“使用Django的开发服务器将系统跑起来”的步骤跑的。
看你的提示是第三方python包没有正确安装。
你可以用pip install -r requirements.txt重新安装一次看看。
所有的python包全部安装成功了,但还是有这个问题,奇怪了
其实博主已经把源代码放出来了。大家可以自己修改bug。这也是开源精神的所在
老板,http://127.0.0.1:8002/static/grappelli/jquery/ui/css/custom-theme/jquery-ui-1.8.18.custom.css 这个css文件放在哪了? static下我没有找到呀
你可以参考django staticfiles的文档 这是grappelli的静态文件,在grappelli这个APP的static目录下。
啊? 可是我这个没有grappelli这个应用呀!
对不起楼主,我忘了,这个是个包