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

最近、 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を使用します-どこかで間違えたら-私を修正してください タイポグラファーのイゴールに再び感謝します。




All Articles