Skip to main content

blogs on zfl

Project description

zfl-blogs

PyPI - Version PyPI - Python Version

Videotogif (1)


目次

詳細

zfl-blogs

インストール

$ pip install --upgrade pip

$ pip --version
pip 21.3.1

$ pip install zfl-blogs

設定

settings.pyの編集

INSTALLED_APPS = [
    ...
    'django.forms',
    'django_cleanup',  # ファイルを自動的に削除するサードパーティ
    'markdownx',       # Django用に構築されたMarkdownエディタ
    'blogs',           # zfl-blogsアプリ
]

# マークダウンプレビューで必要な定義
FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'

...

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],  # プロジェクト直下でのtemplatesディレクトリを有効にする
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                ...
                'blogs.context.common',  # context.pyのcommon関数をテンプレートで使えるようにする
            ],
            # カスタムテンプレートタグ
            'libraries': {
                'mark': 'blogs.templatetags.mark',
            }
        },
    },
]

...

STATIC_URL = '/static/'


MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

MARKDOWNX_IMAGE_MAX_SIZE = {'size': (800, 500), 'quality': 100}

MARKDOWNX_UPLOAD_MAX_SIZE = 1000 * 1024 # 最大1MBまで可能

MARKDOWNX_UPLOAD_CONTENT_TYPES = ['image/jpeg', 'image/png', 'image/gif']

MARKDOWNX_MARKDOWN_EXTENSIONS = [
        'extra',  # Markdownの拡張機能
        'admonition', # 訓戒・忠告
        'sane_lists', # 正常なリスト
        'toc',    # 目次
        'nl2br',  # 改行
]

MARKDOWNX_MARKDOWN_EXTENSION_CONFIGS = {
        'toc': {
            'title': '目次',
            'permalink': True
        }
}

urls.pyの編集

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static


urlpatterns = [
    path('admin/', admin.site.urls),
    path('markdownx/', include("markdownx.urls")),
    path('blogs/', include("blogs.urls")),
]

# 開発環境での設定
if settings.DEBUG == True:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

settings.pyFORM_RENDERERdjango.forms.renderers.TemplatesSettingに設定しているので、プロジェクト直下にtemplatesディレクトリを作成し、blogsアプリのtemplatesディレクトリからmarkdownxディレクトリをコピーしてきます。

そうすることで、記事を書く際のマークダウンプレビューを横並びにすることができます。

プロジェクト直下に「templates」ディレクトリを作成します。

$ mkdir templates

zfl-blogsパッケージ内にある「markdownx/widget.html」をプロジェクト直下の「templates」ディレクトリにコピーします。

以下のようにして目的のディレクトリの在り処を確認できます。

$ python3 -c "import blogs; print(blogs.__path__[0])"
.../lib/python3.6/site-packages/blogs

linuxコマンドの「xargs」を使って一行でコピーしてしまいます。

$ python3 -c "import blogs; print(blogs.__path__[0]+'/templates/markdownx')" | xargs -I % -t cp -r % templates/.
cp -r /../lib/python3.6/site-packages/blogs/templates/markdownx templates.

プロジェクト直下のディレクトリを確認

$ls templates
markdownx

プロジェクト直下のtemplatesディレクトリ内にある「base.html」をエクステンドしているので、「base.html」には「title」・「blogs-style」のブロックタグを設定します。

デザインはCSSフレームワークのBootstrap5.3.0を使用しています。

<html lang="ja" prefix="og: http://ogp.me/ns#">
  <head>

    <!-- Webサイトタイトル -->
    <title>{% block title %}Blog{% endblock title %}</title>

    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
    <!-- Bootstrap ICON -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css">

    <!-- OginalApp Style -->
    {% block blogs-style %}{% endblock blogs-style %}

  </head>
  <body>

    {% block content %}
    {% endblock %}

    <!-- jQuery -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <!-- Bootstrap JS -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
  </body>
</html>

実行

データベースの作成

$ python3 manage.py migrate

スーパーユーザーの作成

$ python3 manage.py createsuperuser

起動

$ python3 manage.py runserver

その他

markdownxで保存された画像は自動的に削除されないので、file_cleanupコマンドを実行して手動削除する必要があります。

$ python3 manage.py file_cleanup

License

zfl-blogs is distributed under the terms of the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zfl_blogs-2.2.2.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zfl_blogs-2.2.2-py3-none-any.whl (2.3 MB view details)

Uploaded Python 3

File details

Details for the file zfl_blogs-2.2.2.tar.gz.

File metadata

  • Download URL: zfl_blogs-2.2.2.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for zfl_blogs-2.2.2.tar.gz
Algorithm Hash digest
SHA256 5e5d402da71ebe66b9ff30c14da1cbc0675b3851951b418cae782ac61862a360
MD5 75b2eee21faf6890b11499bdfb0fc6af
BLAKE2b-256 e4d8a6e65765eb31c905ac945a9b85f92d16713f73c1409f3a52888ddd5906d7

See more details on using hashes here.

File details

Details for the file zfl_blogs-2.2.2-py3-none-any.whl.

File metadata

  • Download URL: zfl_blogs-2.2.2-py3-none-any.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for zfl_blogs-2.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0a77d56a371d46d6aa491460ec7ffe3593c7c176d99d03d0a192ed9409e62119
MD5 671c0dcae32b5e41f04a5434c50bc033
BLAKE2b-256 8d2c95199c3ac18931f552c36664e6c92d8062bcd44126795c429e1998a28319

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page