TurboGears2的移动中间件实用程序检测移动浏览器

tgext.mobilemiddleware的Python项目详细描述


关于移动中间件

移动中间件是wsgi应用程序的中间件。

被认为用于TurboGears 2应用程序,它检测移动浏览器并提供一种方法 去发现和回应他们。检测表达式可以自定义,动作可以 将普通检测更改为为为移动请求公开特定的自定义模板

您可以使用以下命令查看您的请求是否来自移动浏览器:

from tg import request
request.is_mobile

安装

tgext.mobilemidware既可以从pypi安装,也可以从bitbucket安装:

easy_install tgext.mobilemiddleware

应该只对大多数用户有效

启用移动代理检测

在您的应用程序中config/middleware.py导入mobilemidleware

from tgext.mobilemiddleware import MobileMiddleware

更改您的make_应用程序方法:

app = make_base_app(global_conf, full_stack=True, **app_conf)
return MobileMiddleware(app, app_conf)

公开移动模板

tgext.mobilemidleware实现一个@expose_mobile装饰程序,其工作方式类似于@expose TurboGears2装饰器,可用于指定要为移动请求公开的模板。

这将通过在呈现视图之前切换模板来工作,如果请求 检测到来自移动浏览器。 @expose\u mobile支持@expose使用的相同模板命名约定 并可以接受任何已在TurboGears中注册的渲染引擎 通过将其指定为engine:module.template\u name

示例:

@expose('app.templates.index')
@expose_mobile('app.templates.mobile.index')
def index(self, *args, **kw):
    return dict()

自定义用户代理检测

如果要快速自定义用于检测移动浏览器的正则表达式,可以定义mobile.agents 应用程序配置文件中的配置变量,并将其设置为要使用的正则表达式。

对于更复杂的自定义,可以创建自己的子类detectMobileBrowser, 或可调用对象,并将其作为参数提供给mobilemidlware,例如:

return MobileMiddleware(app, app_conf, mobile_browser_detector=YourClass)

detectMobileBrowser任何子类都可以通过重写detectMobileBrowser.perform\u detection方法来更改行为。 如果用户定义了一个自定义正则表达式,它将在perform_detection方法中作为self.custom_re

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

推荐PyPI第三方库


热门话题
用户界面java,使用gui连接到另一台计算机/服务器的文件系统   运行sbt的ubuntu返回错误:“javahome需要<path>参数”   java如何在Android中处理许多ImageView而不出现内存问题?   查询中非法字符的java相同URL失败   安卓取消引用可能会产生“java”。lang.NullPointerException'   java中的indexoutofboundsexception“java.lang.ArrayIndexOutOfBoundsException”错误   xml Java将dom保存到文件>文件在程序结束后由另一个进程打开   Java的垃圾收集器是如何工作的?   Java如何筛选值(列表)   java处理字符串我怎样才能像在真实的书籍中一样在上面部分生成“小数字”呢?   java SonarQube是否有一个API来获取所有项目分析的一部分?   java startActivity(intent)什么都不做   JAVAutil。扫描器类Java   java如何从Firebase更新电子邮件?UpdateMail方法已被弃用   java Hibernate。如何正确组织带有注释的onetomany关系?   在java中获得卷标和驱动器号之间的映射(而不是FileSystemView)的解决方法是什么   java查找文件的路径