跳转到主要内容

django-brevisurl是用于缩短URL的django应用

项目描述

django-brevisurl是django应用,用于缩短URL。Brevis是拉丁语单词,意为简短,因此名称brevisurl == shorturl或url缩短器。实际创建短URL由缩短后端处理。

需求

  • python 2.7+

  • django

安装

通过pypi安装或复制此模块到您的项目或PYTHONPATH中。

将brevisurl添加到项目的settings.py文件中的INSTALLED_APPS

INSTALLED_APPS = (
    'localeurl',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',
    'django.contrib.sitemaps',
    'web',
    'debug_toolbar',
    'rosetta',
    'south',
    'brevisurl'
)

运行syncdb命令以从brevisurl模型创建数据库表

python manage.py syncdb

配置

django settings.py常量

# Setting for default brevis backend
BREVISURL_BACKEND = 'brevisurl.backends.local.BrevisUrlBackend' # Default is 'brevisurl.backends.local.BrevisUrlBackend'

# This bypasses Django Site framework and settings.SITE_ID; if set, brevisurl don't use Django Site framework
# but uses this settings insted to generate  absolute urls
BREVISURL_BACKEND_LOCAL_DOMAIN = 'http://brevisurl.net/' # Default is None

# Characters that are used to generate tokens for local backend.
BREVISURL_LOCAL_BACKEND_TOKEN_CHARS = list(string.ascii_letters + string.digits)

# Settings for maximum length for original url (including GET query parameters)
BREVISURL_LOCAL_ORIGINAL_URL_MAX_LENGTH = 200

# Settings for token length.
BREVISURL_LOCAL_BACKEND_TOKEN_LENGTH = 5

# Settings for url pattern.
BREVISURL_LOCAL_BACKEND_URL_PATTERN = r'^(?P<token>[a-zA-Z0-9]{' + str(LOCAL_BACKEND_TOKEN_LENGTH) + r'})$'

# Protocol for local backend.
BREVISURL_LOCAL_BACKEND_DOMAIN_PROTOCOL = getattr(settings, 'BREVISURL_LOCAL_BACKEND_DOMAIN_PROTOCOL', 'http')

如果使用本地后端,将brevisurl url模式追加到urls.py模块的末尾

urlpatterns += patterns('',
    # brevisurl urls
    (r'^', include('brevisurl.urls'))
)

为了能够访问brevisurl设置,将brevisurl.context_processors.brevisurl_data添加到上下文处理器

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.request',
    'django.contrib.messages.context_processors.messages',
    'brevisurl.context_processors.brevisurl_data'
)

配置站点框架

此设置仅对本地后端重要。必须至少创建一个站点对象,并通过settings.SITE_ID配置为当前站点。对于开发和生产环境切换,建议您使用如下配置。在使用< cite>absurl 模板标签时,设置也很重要。绝对URL的域名由当前站点对象生成。

if DEBUG:
    SITE_ID = 2 # pk for Site object containing your development domain e.g. 'localhost:8000'
else:
    SITE_ID = 1 # pk for Site object containing your production domain e.g. 'www.production.net'

示例

示例 1

使用程序化方法

from brevisurl import get_connection

connection = get_connection()
short_url_obj = connection.shorten_url('http://www.codescale.net/')
print short_url_obj.shortened_url

示例 2

使用程序化方法并带有快捷方式

from brevisurl import shorten_url

shor_url_obj = shorten_url('http://www.codescale.net/')
print shor_url_obj.shortened_url

示例 3

通过过滤器方法在模板中使用brevisurl

{% load brevisurltags %}
{% url homepage as homepage_url %}
{{ homepage_url|shorten_url }}

示例 4

使用带有过滤标签的brevisurl在模板中。brevisurl附带一个名为< cite>absurl 的特殊标签,其工作方式与< cite>url django标签完全相同,但在解析的URL路径之前添加了协议 + 域名。

{% load brevisurltags %}
{% absurl homepage as homepage_url %}
{{ homepage_url|shorten_url }}

测试

在以下环境中测试

  • Xubuntu Linux 12.04 LTS precise 64位

  • python 2.7.3+

  • python unittest

  • django 1.4.1

运行测试

要运行测试,请运行以下命令

$ python manage.py test brevisurl

开发设置

$ make bootstrap
$ python manage.py test brevisurl

测试

在以下环境中测试

  • Linux Mint 15 Olivia 64位

  • python 2.7.4

  • python unitest

运行测试

要运行测试,执行以下命令之一:

$ python manage.py test brevisurl

或者:

$ make test

作者

char0n(Vladimír Gorej,CodeScale s.r.o.)
电子邮件:gorej@codescale.net

参考资料

项目详细信息


由以下组织支持