在django forms媒体中呈现内联css和js。
django-embedded-media的Python项目详细描述
Author: | Derek Payton |
---|---|
Version: | 0.1.0 |
License: | MIT |
如果遇到这样一种情况,那就是非常方便 能够在django表单媒体中呈现内联css或js?
这样你就可以做到。
一切都始于票#13978,这是我支持了一段时间。然而, 我不再认为这是一个很好的特点,在django。使用后 #13978补丁一段时间后,我意识到这太简单了 太依赖它了。没人想看到一个二十几行的 jquery在django表单类的中间找到了js。
然而,如果你有需要的话,你认为 你很有纪律,不会把所有的css和js都写成字符串 在你的.py文件中-然后django嵌入式媒体使之成为可能。
用法
不需要特殊配置。这是一个django应用程序,技术上来说,但是 您不需要将其放入已安装的应用程序中。只需安装软件包 开始嵌入样式和脚本。
在窗体上工作:
>>>fromdjangoimportforms>>>importembedded_mediaasemb>>>>>>classMyForm(forms.Form):...classMedia:...css={'all':(emb.CSS('.mywidget { display: none; }'),)}...js=(emb.JS('init_mywidget();'),)>>>printMyForm.media<styletype="text/css"media="all">.mywidget{display:none;}</style><scripttype="text/javascript">init_mywidget();</script>>>>
在窗体小部件上工作:
>>>fromdjangoimportforms>>>importembedded_mediaasemb>>>>>>classMyWidget(forms.TextInput):...classMedia:...css={'all':(emb.CSS('.mywidget { display: none; }'),)}...js=(...'whizbang.js',...emb.JS('init_mywidget();'),...)>>>printMyWidget().media<styletype="text/css"media="all">.mywidget{display:none;}</style><scripttype="text/javascript"src="/static/whizbang.js"></script><scripttype="text/javascript">init_mywidget();</script>>>>
用作动态媒体属性:
>>>fromdjangoimportforms>>>importembedded_mediaasemb>>>>>>classMyForm(forms.Form):...def_media(self):...returnMedia(...css={'all':(emb.CSS('.mywidget { display: none; }'),)},...js=(emb.JS('init_mywidget();'),)...)...media=property(_media)>>>printMyForm().media<styletype="text/css"media="all">.mywidget{display:none;}</style><scripttype="text/javascript">init_mywidget();</script>>>>
测试
测试需要Django、coverage和pep8,这些都很方便 列在requirements.txt中:
$ pip install -r requirements.txt $ python setup.py test