呓语 | 杨英明的个人博客

专注于c++、Python,欢迎交流

By

修改博客系统的第三方库

博客系统的运行环境由Django、markdownx、markdown-deux、markdown2等第三方库组成。

在写博客系统的过程中,为了实现自己的意图,我修改了一些第三方库的源代码。

为了以后方便部署,在这里记录一下我修改的地方。

修改markdown_deux

markdown_deux用于渲染markdown文本

作用:关闭渲染的安全模式,以便正常渲染HTML
修改 BLOG_VENV/lib/python2.7/site-packages/markdown_deux/conf/settings.py 12行

   8 MARKDOWN_DEUX_DEFAULT_STYLE = {
   9     "extras": {
  10         "code-friendly": None,
  11     },
  12     "safe_mode": "escape",
  13 }

   8 MARKDOWN_DEUX_DEFAULT_STYLE = {
   9     "extras": {
  10         "code-friendly": None,
  11     },
  12     #"safe_mode": "escape",
  13     "safe_mode": False,
  14 }

修改markdownx

markdownx是一款markdown编辑器,支持所见即所得(预览)。

作用:使markdownx编辑器可以拖曳上传gif动图文件
修改 BLOG_VENV/lib/python2.7/site-packages/markdownx/forms.py 71行

  71         if content_type.lower() != self._SVG_TYPE:
  72             # Processing the raster graphic image:
  73             image = self._process_raster(image, image_extension)
  74             image_size = image.tell()

 71         if content_type.lower() != self._SVG_TYPE and content_type.lower() != 'image/gif':
 72             # Processing the raster graphic image:
 73             image = self._process_raster(image, image_extension)
 74             image_size = image.tell()

作用:修改markdownx编辑器预览页的css显示样式
修改 BLOG_VENV/lib/python2.7/site-packages/markdownx/static/markdownx/admin/css/markdownx.css 第7、10行

   4 .markdownx .markdownx-editor,
   5 .markdownx .markdownx-preview {
   6     margin-left: 0;
   7     width: 610px;
   8 }
   9 .markdownx .markdownx-preview {
  10     overflow-y: scroll;
  11     -webkit-text-size-adjust: 100%;
  12     -ms-text-size-adjust: 100%;
  13     font-size: 100%;
  14     font-size: 1em;
  15     line-height: 1.5em;
  16 }

   7 .markdownx .markdownx-editor,
   8 .markdownx .markdownx-preview {
   9     margin-left: 0;
  10     width: 600px;
  11 }
  12 .markdownx .markdownx-preview {
  13     /*overflow-y: scroll;*/
  14     border: double ;
  15     -webkit-text-size-adjust: 100%;
  16     -ms-text-size-adjust: 100%;
  17     font-size: 100%;
  18     font-size: 1em;
  19     line-height: 1.5em;
  20
  21     margin-left: 50px;
  22     padding-top:0px;
  23 }

作用:修改css,使markdownx编辑页和预览页并排显示
修改 BLOG_VENV/lib/python2.7/site-packages/markdownx/templates/markdownx/widget.html 全部代码

   1 <div class="markdownx">
   2     {{ markdownx_editor }}
   3     <div class="markdownx-preview"></div>
   4 </div>

   1 <div class="markdownx row" >
   2     <!--style="margin-left: -350px;margin-top:50px;">-->
   3     <div class="col-md-6">
   4         {{ markdownx_editor }}
   5     </div>
   6     <div class="col-md-6" >
   7         <!--style="padding-left: 50px;">-->
   8         <div class="markdownx-preview"></div>
   9     </div>
  10 </div>

作用:修改默认markdownx渲染引擎 markdown 为 markdown2 修改 BLOG_VENV/lib/python2.7/site-packages/markdownx/utils.py 第1行

   1 import markdown
   2
   3 from PIL import Image
   4
   5 from .settings import MARKDOWNX_MARKDOWN_EXTENSIONS, MARKDOWNX_MARKDOWN_EXTENSION_CONFIGS
   6
   7
   8 def markdownify(content):
   9     return markdown.markdown(
  10                         content,
  11                         extensions=MARKDOWNX_MARKDOWN_EXTENSIONS,
  12                         extension_configs=MARKDOWNX_MARKDOWN_EXTENSION_CONFIGS
  13     )

  1 import markdown
   2
   3 from PIL import Image
   4 import markdown2
   5 from django.utils.safestring import mark_safe
   6 from django.utils.encoding import force_text
   7 from django.template.defaultfilters import stringfilter
   8
   9 from .settings import MARKDOWNX_MARKDOWN_EXTENSIONS, MARKDOWNX_MARKDOWN_EXTENSION_CONFIGS
  10
  11
  12 def markdownify(content):
  13     return markdown2.markdown(
  14         content,extras=MARKDOWNX_MARKDOWN_EXTENSIONS
  15     )

尾记

当时部署网站的时候,我先将项目源代码复制到了vps中,接下来需要安装项目的运行环境,比如Django、markdown2等。

通过requirements.txt 安装了依赖的第三方工具之后,发现我改动的内容并没有同步过来。这意味着我运行项目之后,有些地方的效果并不能和我意图相同,比如markdownx编辑器的编辑页和预览页不能并排显示。

为了找回同步的内容,我用diff对比了 修改过的运行环境原生运行环境,得到对比结果之后总结出以上内容。

以下是diff的原对比结果,也放在这里:

diff -x '*.pyc' -ed -r BLOG_VENV/lib/python2.7/site-packages/markdown_deux/conf/settings.py BLOG_VENV_nav/lib/python2.7/site-packages/markdown_deux/conf/settings. 
py
12,13c
    "safe_mode": "escape",
.
diff -x '*.pyc' -ed -r BLOG_VENV/lib/python2.7/site-packages/markdownx/forms.py BLOG_VENV_nav/lib/python2.7/site-packages/markdownx/forms.py
71c
        if content_type.lower() != self._SVG_TYPE:
.
diff -x '*.pyc' -ed -r BLOG_VENV/lib/python2.7/site-packages/markdownx/static/markdownx/admin/css/markdownx.css BLOG_VENV_nav/lib/python2.7/site-packages/
markdownx/static/markdownx/admin/css/markdownx.css
135,166d
112d
22,24d
15,16c
    overflow-y: scroll;
.
12,13d
10c
    width: 610px;
.
3,5d
diff -x '*.pyc' -ed -r BLOG_VENV/lib/python2.7/site-packages/markdownx/templates/markdownx/widget.html BLOG_VENV_nav/lib/python2.7/site-packages/markdownx/    
templates/markdownx/widget.html
1,9c
<div class="markdownx">
    {{ markdownx_editor }}
    <div class="markdownx-preview"></div>
.
diff -x '*.pyc' -ed -r BLOG_VENV/lib/python2.7/site-packages/markdownx/utils.py BLOG_VENV_nav/lib/python2.7/site-packages/markdownx/utils.py
16,22d
13,14c
    return markdown.markdown(
                        content,
                        extensions=MARKDOWNX_MARKDOWN_EXTENSIONS,
                        extension_configs=MARKDOWNX_MARKDOWN_EXTENSION_CONFIGS
.
4,7d
diff -x '*.pyc' -ed -r BLOG_VENV/lib/python2.7/site-packages/pkg_resources/__init__.py BLOG_VENV_nav/lib/python2.7/site-packages/pkg_resources/__init__.py
1958a
        elif subitem.lower().endswith('.dist-info'):
            subpath = os.path.join(path_item, subitem)
            submeta = EggMetadata(zipimport.zipimporter(subpath))
            submeta.egg_info = subpath
            yield Distribution.from_location(path_item, subitem, submeta)

.
diff -x '*.pyc' -ed -r BLOG_VENV/lib/python2.7/site-packages/setuptools/command/__init__.py BLOG_VENV_nav/lib/python2.7/site-packages/setuptools/command/__init__. 
py
5c
    'register', 'bdist_wininst', 'upload_docs', 'upload', 'build_clib',
.

原创声明

转载请注明:呓语 » 修改博客系统的第三方库