django orm中内容的通用url shortner
django-laconicurls的Python项目详细描述
简介
django laconicurls不同于其他django url shortener应用程序。它使用django的genericforeignkeys和get_absolute_url为django模型的实例提供短url。我们的目标是提供简短的、可读的网址,这些网址可以在电子邮件、印刷活动、二维码和社交媒体等中显示。这些网址将继续在网站重组等方面发挥作用
快速启动
运行pip install django laconicurls安装django laconicurls
在“设置”中将“laconicURL”添加到已安装的应用程序。py:
INSTALLED_APPS = ( ... 'laconicurls', )
将laconicurls urlconf添加到urls.py如果可能,最好使用一个不区分大小写的字符:
url(r'^(?i)Z', include('laconicurls.urls')),
运行python manage.py migrate以创建必要的模型。
在代码中,创建一些url:
from laconicurls.models import laconic_url_for_object #this can be any django object that supports get_absolute_url article = MyArticleModel.objects.get(pk=1) short_url = laconic_url_for_object(article)
功能
- Creates and manages shortcut URLs for any instance of a Django model that implements get_absolute_url
- Case insensitive Base27 encoding of URLs. Alphabet excludes vowels and numbers which look like vowels to reduce the likelyhood of offensive URLs (at least in English)
- One laconic URL per object. Repeat calls to laconic_url_for_object for a given object will always result in the same URL
示例用法
假设您有两种型号,产品和促销,它们都实现了get_absolute_url,并且具有搜索引擎友好的url:
>>> Product.objects.get(pk=100).get_absolute_url() '/products/garden/100-fancy-green-electric-lawnmower' >>> Promotion.objects.get(pk=50).get_absolute_url() '/promotions-and-hot-deals/50-up-to-twenty-percent-off-gardening-equipment'
显然,这些网址不适合打印活动,并有可能随着时间的推移而改变,受不同的搜索引擎优化趋势。
<>要添加对简洁性URL的支持,需要选择一个不与任何现有URL冲突的合适前缀。理想情况下,这将是一个单独的字符,不会区分大小写,但如果你想它可以更长或包含斜线。例如,将以下内容添加到urls.py中,使其具有以字母Q开头的LaconicURL:url(r'^(?i)Q', include('laconicurls.urls')),
获取laconic url的最简单方法是使用laconic\u url\u for\u对象帮助器示例输出如下:
>>> from laconicurls.models import laconic_url_for_object >>> laconic_url_for_object(Product.objects.get(pk=100)) '/QGH3' >>> laconic_url_for_object(Promotion.objects.get(pk=50)) '/QGH4'
当访问这些url时,它们将重定向到各自的get_absolute_url方法调用返回的位置
待办事项
- Add support for templatetags
- Investigate ways to support alternate alphabets, as some users will not require case insensitive urls and may prefer a more efficient encoding (e.g. base 62)
- Management commands for inspecting URLs