将喷油器与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变量始终存储0值。为什么?   如何使用Java/REST将Azure blob从一个存储容器移动到另一个存储容器?   java将commons DBCP从1.2升级到1.4,我应该害怕吗?   java如何使用分隔符拆分字符串?   java使用数组读取json对象   java在groovy中切片字符串   交换数组java的两个邻域元素   java移动用于确定字符串是否为回文的逻辑   java Android应用程序在一个活动中崩溃   java Sparkjava将webapp文件夹设置为静态资源/模板的文件夹   java复杂条件表达式,用户易用。   java如何仅在表存在时从表中选择值   java I无法将数据从Recyclerview传递到其他活动   java数据结构最佳设计(大数据)   java Android从DatePickerDialogFragment中删除日历视图   java将数据从Firebase获取到片段   数组。sort()在java中运行不正常