django pybrowscap是支持pybrowscap的django中间件
django-pybrowscap的Python项目详细描述
django pybrowscap是支持pybrowscap的django中间件。 它用browser属性装饰请求,该属性包含所有可能的信息 关于访问视图的用户代理。
要求
- Python2.7+
- Django
- 请求(http://docs.python-requests.org/en/latest/)
- Pybrowscap
- browscap csv文件(http://browsers.garykeith.com/downloads.asp)
安装
通过pipy安装或将此模块复制到项目或python路径中。
将django_pybrowscap放入projects settings.py文件中已安装的应用程序中
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', 'django_pybrowscap' )
将django_pybrowscap.middleware.pybrowscapmiddleware放入projects settings.py文件中的middleware类中
MIDDLEWARE_CLASSES = ( 'web.middleware.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django_pybrowscap.middleware.PybrowscapMiddleware', .... )
配置
django settings.py常量
# This setting will effectively turn the middleware off, to speed up requests/response while developing PYBROWSCAP_INITIALIZE = True # Default is `not settings.DEBUG`. # Path where browscap file is located on filesystem PYBROWSCAP_FILE_PATH = MEDIA_ROOT+os.sep+'browscap.csv' # Default is '' (empty string) # Proxy to use # See: http://docs.python-requests.org/en/latest/user/advanced/#proxies PYBROWSCAP_PROXIES = { "http": "http://user:pass@10.10.1.10:3128", "https": "http://10.10.1.10:1080", } # Defaults to None. # Timeout for HTTP requets # See: http://docs.python-requests.org/en/latest/user/quickstart/#timeouts PYBROWSCAP_HTTP_TIMEOUT = 30 # Tuple of regular expressions of paths that are to be ignored by the middleware PYBROWSCAP_IGNORE_PATHS = ( re.compile(r'^/sitemap.xml$'), re.compile(r'^/robots.txt$'), re.compile(r'^/favicon.ico$'), re.compile(r'^/media/') ) # Defaults to an empty tupple. # This tells middleware to reload browscap file from disk every PYBROWSCAP_RELOAD_INTERVAL seconds PYBROWSCAP_RELOAD = True # Reload file. Default is False. PYBROWSCAP_RELOAD_INTERVAL = 7 * 24 * 60 * 60 # Reloads browscap file once a week
自动更新
通过执行内置管理命令下载最新版本的browscap数据::
$ python manage.py download_browscap \ --url http://browsers.garykeith.com/stream.asp?BrowsCapCSV \ --file-path /path/to/downloaded/browscap_file
不需要为此命令提供任何选项。默认情况下,将下载最新的csv browscap文件 并保存到settings.pybrowscap_file_path。别忘了设置设置。pybrowscap_reload=true。 为了方便起见,每周通过cron自动执行一次命令:
5 8 * * 6 python manage.py download_browscap
示例
def standard_view(request): if request.browser is not None and request.browser.is_crawler(): # do something else: # do something else
测试
在evnironment上测试
- Xubuntu Linux 12.04 LTS精确64位
- python 2.7.3
- python unitest
- browscap_14_05_2012.csv,2012年5月14日,星期一,22:20:20-0000
运行测试
要运行测试,请执行以下命令之一:
$ python setup.py test $ make test