将喷油器与django集成

django-injector的Python项目详细描述


django喷油器

django Injector是django的一个应用程序,它集成了injector 和Django在一起。

Injector是一个简单易用的依赖注入框架。

安装

$ pip install django_injector

然后将django_injector添加到INSTALLED_APPS'django_injector.middleware.DjangoInjectorMiddleware' 在你的django配置中MIDDLEWARE

配置

django_injector使用来自注入器的模块机制。所需模块应为 在INJECTOR_MODULES设置中列出,每个项必须是injector.Module的子类。 或者可以接收活页夹作为其唯一参数的可调用文件。

加载应用程序时加载模块。

用法

使用带有injector.inject的注入器修饰函数或方法。装饰 方法或函数可以接收附加的、未注入的参数,应列出这些参数 注入参数之前。

以前在django_injector中有一个定制的inject装饰器-它不再是 必需的,已被删除。

示例

这是从django接收request并 一针见血的争论

frominjectorimportinjectfrommy_app.servicesimportSomeService@injectdefmy_view(request,some_service:SomeService):"""Will receive a `request` from Django and `some_service` from the injector."""returnsome_service.do_something(request)

请求范围

提供自定义Injector scope- 这是请求范围。处理单个请求期间绑定在请求作用域共享实例中的类型 但不要跨越请求处理边界。类似于 Flask-Injector's request scope

请求作用域仅依赖于单个线程处理的单个请求(绿色线程, 当使用gevent或eventlet monkey补丁时,也支持)。

示例:

fromdjango_injectorimportrequest_scopefrominjectorimportinjectclassService:passclassRequiresService:@injectdef__init__(self,service:Service):self.service=serviceclassAlsoRequiresService:@injectdef__init__(self,service:Service):self.service=service@injectdefmy_view(request,service:Service,rs:RequiresService,ars:AlsoRequiresService):# The same Service instance everywhereassertserviceisrs.serviceassertrs.serviceisars.service# ...

内置绑定

我们可以注入django.http.HttpRequest,它将与内部的request参数是同一个对象 观点。绑定可用于在对象层次结构中提供HttpRequest深度 必须手动传递。

示例:

fromdjango.httpimportHttpRequestfrominjectorimportinjectclassRequiresRequest:@injectdef__init__(self,request:HttpRequest):self.request=request@injectdefmy_view(request,rr:RequiresRequest):# The same request everywhereassertrr.requestisrequest# ...

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

推荐PyPI第三方库


热门话题
数组在Java中如何读取坐标的奇偶行?   java如何为JPAHibernate定义非JTA数据源?组织。冬眠联系数据源连接提供程序找不到数据源:   java Eclipse将JavaFX包标记为缺失,尽管它们已添加到构建路径中   java格式化toString方法   java如何在启动程序时将光标集中在JTextField上?   java如何修复NoTouchElementException扫描程序?   在java中,从异常块调用方法是一种好的做法吗?   jsp Java对象创建与字符串解析   java缺失。将jfrog工件从3.4.1升级到4.7后,jar工件的pom文件   JavaAndroidStudio:在重新格式化代码时,将我的单行方法保留为键入的方法   安卓如何在java中访问嵌套的Json数组数据   弹性搜索中的java模式匹配?   java小部件在应用程序被强制停止后无法正常启动   java VideoView添加多个视频并播放   java Maven+FindBugs在高优先级警告时失败   java更新:根据文件扩展名将文件从一个文件夹移动到另一个文件夹   java从mysql表获取元素到arraylist   java在Android studio中使用npm jsonserver