django pybrowscap是支持pybrowscap的django中间件

django-pybrowscap的Python项目详细描述


django pybrowscap是支持pybrowscap的django中间件。 它用browser属性装饰请求,该属性包含所有可能的信息 关于访问视图的用户代理。

要求

安装

通过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

作者

字符(vladimir gorej,代码缩放)
电子邮件:gorej@codescale.net
网页:http://www.codescale.net

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
IntelliJ IDEA Java代码样式:注释和枚举之间的空间   java车辆路径问题或工具教程未在eclipse上运行   从HTML表单发布时,java非英语UTF 8字符会发生变化   使用MultiResourceItemReader时,java Spring批处理在CustomLineMapper中获取文件名   java配置JAXB解组器来处理同时具有acessor方法和字段的类   java在JpaRepository findAll()方法中返回对象的浅拷贝   java如何对docx文件进行碎片整理,以便与ApachePOI3.8一起使用?   java如何将一维数组分解成行?   java为什么这个图形对象不是绘画?(我做错了什么?)   如何在Java代码中将Java函数应用于Scala选项   使用IntelliJ REST客户端测试Spring MVC POST导致415   weka java代码kmeans群集   java中为什么Sin(30)=0.98803116240928618   java创建Android警报通知   数组可能是Java For循环问题