django资产定义允许在python代码中定义静态文件(javascript、css)的集合,并(重新)在django视图和模板中使用它们。

django-asset-definitions的Python项目详细描述


Django资产定义

Build StatusCode Coverage

资产定义是在python代码中定义的和在django视图中使用的静态文件(javascript、css)的集合。 和模板。

资产定义的一个例子是Media类,您可以 define in Django forms

django-asset-definitionsaim将资产定义的应用扩展到表单之外,并将它们用作 描述和组织javascript和css文件的方法。

安装

pip install django-asset-definitions

使用量

定义:

importasset_definitionsmy_media=asset_definitions.Media(js=("media.js","""<script>window.addEventListener("load", function() {console.log("Loaded!");});</script>""",),css={"all":("media.css",),})

联合收割机:

extended_media=my_media+asset_definitions.Media(js=("extension.js",))

在视图中定义:

importasset_definitionsclassMyView(asset_definitions.MediaDefiningView,...):classMedia:js=("media.js",),css={"all":("media.css",),}...

将表单媒体添加到自动查看媒体:

importasset_definitionsfromdjango.views.genericimportFormViewclassMyFormView(asset_definitions.MediaDefiningView,FormView):...

在模板中使用:

{{view.media.render}}

或:

{{view.media.js.render}}{{view.media.css.render}}

请参阅下面的扩展示例。

asset_definitions.Mediadjango.forms.Media

  1. asset_definitions.Media提供的api与django.forms.Media相同。事实上,它是从 django.forms.Media
  2. asset_definitions.Mediadjango.forms.Media结合使用是安全的。
  3. asset_definitions.Media对象是惰性的。如果组合了asset_definitions.Media的两个或多个实例 仅当呈现媒体时,计算结果。与一起使用reverse_lazy()是安全的 asset_definitions.Media。如果在模块级定义资产,这一点很重要。
  4. MediaDefiningView中的{tt1}$类不支持extend选项。添加到父级中定义的媒体 视图类应该重写get_media方法并使用super(MyView, self).get_media()

示例:

myapp/urls.py

urlpatterns=(url("/",MyView.as_view()),url("/global-variables.js",global_js_variables,name="global_js_variables"),)

myapp/views.py

importasset_definitionsfrom.importassetsclassMyView(assets_definition.MediaDefiningView,TemplateView):template_name="template.html"classMedia:js=("media.js",)css={"all":("media.css",media)defget_media():return(assets.global_js_variables+assets.jquery+super(MyView,self).get_media())defglobal_js_variables(request):js_content='const CURRENT_USER="{}";'.format(request.user)returnHttpResponse(js_content,content_type="application/javascript")

myapp/assets.py

importasset_definitionsfromdjango.coreimporturlresolversglobal_js_variables=asset_definition.Media(js=urlresolvers.reverse_lazy("global_js_variables"),)jquery=asset_definitions.Media(js="jquery.js")

myapp/templates/template.html

<html>
  <head>
    {{view.media.css.render}}
  </head>
  <body>
    ...
    {{view.media.js.render}}
  </body>
</html>

更改

0.3

  • Add Django 2.0 compatibility
  • Extract ^{tt23}$ base class from ^{tt15}$

0.2

  • Specify different requirements in ^{tt25}$ based on the current Python version
  • Allow to use inline JavaScript in media definitions (wrap with ^{tt26}$ tag)

0.1

  • Initial release

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

推荐PyPI第三方库


热门话题
java根据两个数组的值对数组进行排序   具有自签名证书和NTLM代理的java Maven SSL repo错误   java自定义字体按钮不工作AndroidStudio   java通过Spring MVC web应用程序向客户端发送文本文件   Java Spring Web服务SOAP身份验证   ANT property environment=“env”无法在JAVA中检索它,但如果作为ANT命令运行,则可以正常工作   java是为spring mvc rest api或spring boot api对应用服务器的每个新请求创建的服务、存储库和组件的新实例吗?   java私有静态最终字符串未完成其工作   PKCS12的安全Java密钥重新处理   java JPA继承表每类SQLSyntaxErrorException