DPress配置、定制、模板创建指南

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.samplepre.py 。修改其中的SETTINGS设置,确定使用哪个配置(默认可选production/dev)。
  • 复制 sites /settings/local.samplelocal.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文件。

32 Comments

  • pylemon
    2012年08月16号 - 10:51 上午 | Permalink

    按照你的说明跑了下。有个疑问

    为何要在 sites/settings/base.py 中将

    #ADMIN_MEDIA_PREFIX = ‘/static/admin/’

    这个注释掉?

    我runserver后 会提示
    AttributeError: ‘Settings’ object has no attribute ‘ADMIN_MEDIA_PREFIX’

    取消了这个注释后正常,但是页面的 css 均无法找到。只能看到没有css的页面。
    后台一直报,缺少500.html 是没有加这个模板吧。

  • 2012年08月16号 - 11:00 上午 | Permalink

    会不会是你的Django版本不对。
    DPress需要使用Django1.4。
    如果你使用 scripts/create_env.py 创建的虚拟环境应当不会出现这个问题。

  • pylemon
    2012年08月16号 - 11:23 上午 | Permalink

    我是用的 create_env.py 创建的虚拟环境。 这个脚本会下载 django >= 1.4

    所以他给我装了 django 1.4.1

    难道是新版本的问题?

  • 2012年08月16号 - 12:59 下午 | Permalink

    就出错提示来看,应当是Django版本太低了。
    你看看是否是由于什么原因,导致使用了老版本的django。
    你可以参考一下相关文档:https://docs.djangoproject.com/en/dev/ref/settings/#admin-media-prefix

  • pylemon
    2012年08月16号 - 2:15 下午 | Permalink

    原来是因为没有配置好 pre.py 文件, 默认指向了 production
    导致了不断的提示

    TemplateDoesNotExist: 500.html

    现在可以用了, 很赞哦。

  • 2012年08月19号 - 8:42 上午 | Permalink

    最近要买个vps,搭建个博客,因此用到了博主的dpress,每个人的想法不同,需求也不一样,我肯定会修改博主的源码的,修改后会将源码开源,并会发给博主。

    希望博主就在vps下部署django环境给写建议。

    我初步打算web服务器用nginx,后面的还没想好,希望博主给些建议和资料。

  • 2012年08月19号 - 11:07 上午 | Permalink

    博主的/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是干什么用的?

  • 2012年08月19号 - 12:01 下午 | Permalink

    url 的问题参考 Django官方文档 https://docs.djangoproject.com/en/1.4/topics/http/urls/#url
    大多的常规问题都是可以通过Django的官方文档或google找到答案的。

  • 2012年08月19号 - 12:06 下午 | Permalink

    我目前采用的是apache+wsgi方式进行部署的。wsgi脚本可以在deploy\dj_scaffold.wsgi找到。
    如果你采用nginx可以自行google相关资料(关键字 django nginx)。DPress作为一个Django项目,部署方式和其他的Django项目不会有什么太大的区别。

  • 2012年08月19号 - 3:08 下午 | Permalink

    好的,Thanks,正在学习修改中…

  • 2012年08月19号 - 4:41 下午 | Permalink

    我再后台管理界面写英文文章没事,一写中文就不行了,显示如下信息:
    Warning at /admin/dpress/post/add/
    Incorrect string value: ‘\xE4\xBD\xA0\xE5\xA5\xBD…’ for column ‘title’ at row 1

    博主遇到没?
    请问这个是数据库的事还是django的问题?

  • 2012年08月19号 - 5:37 下午 | Permalink

    数据库字符集如下:
    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>

  • 2012年08月19号 - 5:41 下午 | Permalink

    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)

    这个我找了半天还是没发现问题出在哪里,希望博主能解答下。

  • 2012年08月19号 - 6:20 下午 | Permalink

    ok,问题已经解决,mysql改过字符集后,需要删除数据库,然后从新python manage.py syncdb后就可以了。

  • 2012年08月20号 - 7:09 上午 | Permalink

    依然存在的问题:
    一:直接从网页上复制内容到编辑器,乱…
    二;按你说的从网页上先复制到记事本再到编辑器,还是乱…

    求解决方法?

  • 2012年08月20号 - 9:17 上午 | Permalink

    这个是我用的Markdown编辑器的问题。这个编辑器有些bug。
    你可以修改文件 sites/dpress/admin.py 注释掉其中的
    models.TextField: {‘widget’: EpicEditorWidget},
    这样可以将编辑器恢复成普通的编辑框。

  • 2012年08月20号 - 5:08 下午 | Permalink

    ok,明白,这是去除了EplicEditorWidget这个插件了,但是MarkDown的语法?

    说实话,我以前学的都是linux运维方面的,前段时间刚开始学习python,然后是django,现在又到了css。

    对于python和django这个我学起来没什么问题,毕竟资料还是不少的。但是这个web前台的东西,html,css,js,博主能否给点经验该怎么学?

    ps:今天刚买了本 《css禅意花园》

  • 2012年08月20号 - 5:13 下午 | Permalink

    请问下博主有没有长期更新的打算呢。

  • 2012年08月20号 - 5:43 下午 | Permalink

    《css禅意花园》对你来说可能太难了些。
    你可以先去http://www.w3school.com.cn/看看其中的
    [HTML教程][HTML DOM 教程][JavaScript 教程]
    多用用就熟悉了

  • 2012年08月20号 - 5:45 下午 | Permalink

    主要功能已经完善了,以后应当不会有什么大的更新。
    如果有bug或是有人提出新需求会进行修正。

  • 2012年08月20号 - 8:23 下午 | Permalink

    谢谢博主,我现在就是一边看代码一边在www.w3school.com.cn上查手册了。

  • 2012年08月20号 - 8:31 下午 | Permalink

    新需求,那我说两个吧,也是我打算改进的地方:
    一:编辑器问题,能否考虑象51cto,csdn那样,调用一下网页编辑器,去除Markdown。
    二:缺少和博主这个wordpress上文章分类的栏目,就是相册,足迹,留言板,关于我…这行,当然这要视个人情况而定。

    其实,我感觉就目前这样也很好了,其他功能可以谁用谁加,毕竟一个模板不能适应所有的人。

  • 2012年08月20号 - 8:58 下午 | Permalink

    + 可以直接使用django-tinymce实现WYSIWYG编辑器。不过要同时支持html和markdown会增加系统的复杂度,所以DPress不会内置WYSIWYG编辑器。
    + 文章分类考虑增加
    + About等定制Page功能通过flatpages实现,模板上只要添加相应的链接就可以了。演示站点上的About Me页面就是这样做的。注:参考 https://docs.djangoproject.com/en/dev/ref/contrib/flatpages/
    + 要比较好的支持相册功能还比较花功夫,而且有些脱离博客的本来目的,所以没有添加相册的计划。

  • 2012年08月21号 - 12:44 下午 | Permalink

    好的,正在学习css,js中,遇到问题,再向博主请教…

  • 2012年08月21号 - 10:17 下午 | Permalink

    哪位大哥指导下,在这一步时
    python manage.py syncdb
    为什么,一直报错,几乎什么module 全没有,例如这样:
    Error: No module named debug_toolbar

  • 2012年08月21号 - 10:53 下午 | Permalink

    你是否是参考“使用Django的开发服务器将系统跑起来”的步骤跑的。
    看你的提示是第三方python包没有正确安装。
    你可以用pip install -r requirements.txt重新安装一次看看。

  • 2012年08月22号 - 10:12 上午 | Permalink

    所有的python包全部安装成功了,但还是有这个问题,奇怪了

  • h3idan
    2012年08月23号 - 5:26 下午 | Permalink

    其实博主已经把源代码放出来了。大家可以自己修改bug。这也是开源精神的所在

  • h3idan
    2012年08月24号 - 3:05 下午 | Permalink

    老板,http://127.0.0.1:8002/static/grappelli/jquery/ui/css/custom-theme/jquery-ui-1.8.18.custom.css 这个css文件放在哪了? static下我没有找到呀

  • 2012年08月24号 - 3:21 下午 | Permalink

    你可以参考django staticfiles的文档 这是grappelli的静态文件,在grappelli这个APP的static目录下。

  • h3idan
    2012年08月24号 - 3:39 下午 | Permalink

    啊? 可是我这个没有grappelli这个应用呀!

  • h3idan
    2012年08月24号 - 3:46 下午 | Permalink

    对不起楼主,我忘了,这个是个包

  • Comments are closed.