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