Django段塞磨边管道
django-slugify-processor的Python项目详细描述
django_slugify_处理器:用于处理slugify边缘的管道
什么是鼻涕虫?
slug是url,通常由post标题生成,您希望 同时具有可读性和有效的url。他们是搜索引擎友好。
django提供了一个slugify function 在django.utils.text.slugify中,它也作为 default filter。
django slug可以通过包在django模型中自动生成 例如:
问题
这个项目基于devel.tech的一篇文章 覆盖django’s import strings。
角部病例存在塌陷。例如:Term | ^{tt1}$ | What you want |
---|---|---|
C | c (correct) | n/a |
C++ | c | cpp |
C# | c | c-sharp |
更糟糕的是,如果使用专门的模型字段 AutoSlugField来自django autoslug或django扩展,默认 行为可能是将C和C++的蛞蝓命名为“C-1”、“C -2”之后的“C”。 拿。
还有一个例子,缩写/速记:
Term | ^{tt1}$ | What you (may) want |
---|---|---|
New York City | new-york-city | nyc |
Y Combinator | y-combinator | yc |
Portland | portland | pdx |
Texas | texas | tx |
$ | ‘’ (empty) | usd, aud, etc? |
US$ | us | usd |
A$ | a | aud |
bitcoin | bitcoin | btc |
United States | united-states | usa |
League of Legends | league-of-legends | league |
Apple® iPod Touch | apple-ipod-touch | ipod-touch |
每个网站和利基市场都有自己的鼻涕虫优势案例。所以我们需要一个解决方案 它可以伸缩,在那里你可以设计你自己的功能。
django slugify处理器如何帮助
它建立在django.utils.text.slugify之上,用于处理您的django 项目的边缘。默认情况下,django slugify处理器将通过 一直到Django的默认行为。通过添加段塞功能 Django项目的设置文件允许您进行调整。
安装
$ pip install django-slugify-processor
配置
要创建处理器,请创建一个接受字符串的函数,然后 返回字符串。假设这是project/app/slugify\u processors.py:
defmy_processor(value):value=value.replace('++','pp')returnvalue
在设置中,添加一个SLUGIFY_PROCESSORS字符串列表 指向函数。任何与 import_string, 在您的设置文件中:
SLUGIFY_PROCESSORS=['project.app.slugify_processors.my_processor']
用法
在正常django代码中
从django_slugify_processor.text导入slugify:
fromdjango_slugify_processor.textimportslugifyprint(slugify('C++'))>'cpp'
模板代码
django slugify处理器设计用于覆盖内置的“slugify”`` 过滤。
通过加载
默认情况下,可以通过^{tt8}加载$ 在你的模板中。
在您的设置中INSTALLED_APPS:
INSTALLED_APPS=['django_slugify_processor']
在您的模板中:
{%loadslugify_processor%}{{"C++"|slugify}}
通过内置的
要使其在所有模板中可用,请在 模板引擎,添加django_slugify_processor.template_tags:
TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','OPTIONS':{'builtins':['django_slugify_processor.templatetags.slugify_processor',],},}]
从模板文件中:
{{"C++"|slugify}}
输出应为:cpp
型号
对于最新的文档,请查看 您正在使用的插件(例如django autoslug或django扩展)。
要使用django slugify处理器的slugify而不是django的默认值, 将有一个字段选项来使用该函数。
django扩展
用1.9.7测试(2017-11-26):
fromdjango.dbimportmodelsfromdjango_extensions.db.fieldsimportAutoSlugFieldfromdjango_slugify_processors.textimportslugifyclassMyModel(models.Model):title=models.CharField(max_length=255)slug=AutoSlugField(populate_from='title',slugify_function=slugify)
Django Autoslug
用1.9.3测试(2017-11-26):
fromdjango.dbimportmodelsfromautoslugimportAutoSlugFieldfromdjango_slugify_processors.textimportslugifyclassMyModel(models.Model):title=models.CharField(max_length=255)slug=AutoSlugField(populate_from='title',slugify=slugify)
学分
- travis.yml和tox.ini基于DRF(BSD 2条款许可)
- yapf配置基于rtd/devel.tech(mit许可)
项目详细信息
python support | 2.7, >= 3.3, pypy, pypy3 |
django support | 1.11 |
Source | https://github.com/develtech/django_slugify_processor |
Docs | https://django-slugify-processor.devel.tech |
API | https://django-slugify-processor.devel.tech/en/latest/api.html |
Changelog | https://django-slugify-processor.devel.tech/en/latest/history.html |
Issues | https://github.com/develtech/django-slugify-processor/issues |
Travis | http://travis-ci.org/develtech/django-slugify-processor |
Test Coverage | https://codecov.io/gh/develtech/django-slugify-processor |
pypi | https://pypi.python.org/pypi/django-slugify-processor |
Open Hub | https://www.openhub.net/p/django_slugify_processor |
License | MIT |
git repo | ^{pr 11}$ |
install stable | ^{pr 12}$ |
install dev | ^{pr 13}$ |
tests | ^{pr 14}$ |