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如何将长字符串转换为短得多的字符串   java类型ArrayList<Boolean>中的toArray(T[])方法不适用于参数(Boolean[])   java xfire webservice客户端获取空响应   java软件框架和软件平台有什么区别?   java构建了一个监听数据库更改并调用其他方法的软件。我做得对吗?   安卓 studio(java)中的Paypal:与服务器通信的问题   我们如何在运行时更改java提供的内置注释的消息   java成批进行http调用   序列化   当我使用Tomcat运行我的应用程序时,我得到了java。网MalformedURLException:本地主机名未知:java。网未知后异常   操作系统Java内存映射文件和刷新   java无法用v6构建JXBrowser jar。18+   java有没有办法从运行在同一台服务器上的代码中获取服务器指纹?   使用“代理”用户的java Spring Active Directory身份验证   在Android(Kotlin/Java)活动之间发送图像   java显示ArrayList对象?