将喷油器与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中的PDF文件   linux Java打开文件,形成实际用户主页~/   java如何在时间线内维护TableView选择?   java Hibernate注释@Where vs@WhereJoinTable   Java读/写访问异常FileNotFoundException(访问被拒绝)   继承在Java中是否可以扩展最后一个类?   Android HttpClient使用java使应用程序崩溃。lang.OutOfMemoryError:pthread_create   java为什么即使我在proguardproject中添加了jar文件,也会出现这种错误。txt?   如果添加JButton,swing Java FocusListener和KeyListener将无法工作   java使用solrj检索json格式的SolrDocument   使用Microsoft Visual Studio代码进行Java编程   java NoClassDefFoundError:org/apache/log4j/Logger   哈希集中包含相等对象的java   java中的参数化构造函数是否需要有一个主体?   java类似于NetBeans不必要的代码检测器   Java实践问题   java Blackberry“[projectname].调试文件丢失”和“I/O错误:找不到程序”jar