为django模型提供textformatfield,并允许使用简单的过滤器构建文本格式。
django-textformat的Python项目详细描述
django文本格式
django textformat使配置和编写文本格式变得容易。 文本格式只是一组应用于 命令。文本过滤器是接受标记字符串并返回 格式化字符串
内置过滤器为:
- html_escape
- 它与Django的escape模板过滤器相同,可以作为文本使用 过滤。
- linebreaks_and_paragraphs
- 它与django的linebreaks模板过滤器相同,可以作为文本使用 过滤。
- linebreaks
- 它与django的linebreaksbr模板过滤器相同,可以作为文本使用 过滤。
- striptags
- 它与django的striptags模板过滤器相同,可以作为文本使用 过滤。
- urlize
- 它与django的urlize模板过滤器相同,可以作为文本使用 过滤。
默认情况下,django textformat不提供任何文本格式,但是 一种想法,文本格式可能由内置过滤器html_escape组成, urlize,linebreaks_and_paragraphs
这将允许您将这些过滤器分组为一种格式并使用它 坚持完成你的项目。
使用量
django textformat的默认用例在模型中可能如下所示:
fromdjango.dbimportmodelsfromdjango_textformatimportTextFormatFieldclassArticle(models.Model):title=models.CharField(max_length=50)content=models.TextField()content_format=TextFormatField()
然后您可以在模板中使用文章的选定格式,如 这个:
{%loadtextformat%}{{article.content|apply_format:article.content_format}}
最初创建文本格式
为了使用像上面的Article这样的模型,您已经需要 django_textformat.models.TextFormat已定义实例。你可以创建 手工或使用数据迁移的格式。我们建议使用数据迁移 这将确保您的项目的所有实例(例如,对于所有dev) 有相同的格式可用。
为此,请在您的某个网站应用程序中创建一个空迁移,如:
python manage.py makemigrations blog --empty
现在让新创建的迁移看起来像这样:
# -*- coding: utf-8 -*-from__future__importunicode_literalsfromdjango.dbimportmigrations,modelsdefadd_format(apps,schema_editor):TextFormat=apps.get_model('django_textformat','TextFormat')markdown_format=TextFormat.objects.create(slug='article',name='Article Format')markdown_format.filters.create(name='html_escape',sort=1)markdown_format.filters.create(name='urlize',sort=2)markdown_format.filters.create(name='linebreaks_and_paragraphs',sort=3)defremove_format(apps,schema_editor):TextFormat=apps.get_model('django_textformat','TextFormat')format=TextFormat.objects.get(slug='article')format.delete()classMigration(migrations.Migration):dependencies=[('django_textformat','0001_initial'),]operations=[migrations.RunPython(add_format,remove_format,),]
添加自定义文本过滤器
添加自定义文本过滤器很容易。为了增加一个,你需要一个 text_fitlers.py文件然后添加一个接受字符串的函数 并返回格式化字符串。
下面是一个示例:
# in your_app/text_filters.pyfromdjango_textformat.registryimportregistryimportmarkdown@registry.registerdefmarkdown(value):returnmarkdown.markdown(value,extensions=['extra'])
现在有一个名为'markdown'的文本过滤器可用于文本 格式
发展
使用以下命令安装依赖项(包括测试依赖项):
pip install -r requirements.txt
然后可以使用以下命令运行所有测试:
tox
更改日志
0.1.0
- 初次发布。