⬆️ ⬇️

Filter for typography

Recently Igor Kononuchenko laid out a version of a typographer written in Python . Igor thanks a lot. And I modestly decided to make a typographic filter for django from the library. Not that it is difficult - but for beginners, like me, it can be useful. What actually happened.



1. To start, downloaded through SVN library from Google code: http://code.google.com/p/typo-py/ .



2. As a guide in writing filters turned to official documentation .

')

3. I did tests on a previously written Portfolio model - hence, such paths turned out. The file typographus.py put in mysite / portfolio / templatetags (don’t forget to put an empty __init__.py file there). At the end of the file I added the filter code itself:



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. In the settings.py file in the INSTALLED_APPS list, added a line, mysite.portfolio.templatetags.typographus , which connects the handler.



5. In the html-template we got the following code:



{% extends "base.html" %}

{% load typographus %}

...

{% block content %}



{% autoescape off %}

<h1>{{ portfolio.title|typographus }}</h1>

{{ portfolio.text|linebreaks|typographus }}

{% endautoescape %}



{% endblock %}





That's all. In the process of writing, I managed to run into a little problem: the typographer himself requires a line in utf8, and if a filter chain is used (for paragraph breaks : {{portfolio.text | linebreaks | typographus}} ), an error is generated . Therefore, in the filter itself there is a check for the type of the string and a conference in utf8, if necessary.



I learned a little crumpled - I just recently used Django - if where I was wrong, correct me. And thanks again to Igor for the typographer.

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



All Articles