タイポグラフィフィルター

最近、 Igor Kononuchenko がPythonで書かれたタイポグラフのバージョンを投稿しました。 人間のイゴール、ありがとうございました。 そして、私は控えめに、ライブラリからdjango用の活版印刷フィルターを作成することにしました。 複雑なことではありませんが、私のような初心者にとっては便利かもしれません。 実際に何が起こったのか。

1.最初に、Googleコードhttp://code.google.com/p/typo-py/を使用してSVNライブラリからダウンロードしました。

2.フィルターを作成する際のガイドとして、 公式のドキュメントを参照しました

3.以前に作成されたポートフォリオモデルでテストを行いました-ここから、そのような方法が判明しました。 typographus.pyファイルをmysite / Portfolio / templatetagsに配置します(空の__init__.pyファイルをそこに配置することを忘れないでください)。 ファイルの最後にフィルターコード自体を追加しました。

from django import template
register=template.Library()

@register.filter
@stringfilter
def typographus(string):
"""Russian typorgify"""
if type(string) is not unicode:
string = unicode(string)
return Typographus().process(string)


4. settings.pyファイルのINSTALLED_APPSリストに、ハンドラーを接続する行mysite.portfolio.templatetags.typographusを追加しました。

5. htmlテンプレートで、次のコードが判明しました。

{% extends "base.html" %}
{% load typographus %}
...
{% block content %}

{% autoescape off %}
<h1>{{ portfolio.title|typographus }}</h1>
{{ portfolio.text|linebreaks|typographus }}
{% endautoescape %}

{% endblock %}


実際、それがすべてです。 執筆の過程で小さな問題にぶつかりました:タイポグラファー自体がutf8の行を必要とし、フィルターチェーンが使用されている場合(段落転送の場合: {{portfolio.text | linebreaks | typographus}} )、エラーが生成されます。 そのため、フィルター自体には、必要に応じて文字列のタイプとutf8の変換のチェックがあります。

私は少ししわくちゃになったことを学びました-私は最近Djangoを使用します-どこかで間違えたら-私を修正してください タイポグラファーのイゴールに再び感謝します。

Source: https://habr.com/ru/post/J42860/


All Articles