一个基于django的小型框架,灵感来自sinatra

importd的Python项目详细描述


您现在可以帮助解决的问题:华夫饼

生成状态:生成状态生成运行状况

…|华夫饼图片:https://badge.waffle.io/amitu/importd.png?label=ready&title=ready
:目标:https://waffle.io/amitu/importd
:alt:"故事已准备好"

……|构建状态图像::https://travis-ci.org/amitu/importd.png?branch=master
:目标:https://travis ci.org/amitu/importd

…|构建健康映像::https://landscape.io/github/amitu/importd/master/landscape.svg
:目标:https://landscape.io/github/amitu/importd/master
:alt:code health


什么是重要的?
===


importd的灵感来自ruby的sinatra。你好世界django项目:

…代码块::python


{"post_id":post_id}

代码::bash

$python foo.py


这将启动调试服务器。

代码::bash

$gunicorn foo:d


通过settings.py文件来管理django中的设置。然后人们将
``local_settings.py``置于覆盖状态。这并不能很好地扩展,我们最终得到了几乎没有结构的非常大的设置文件,由于开发人员的机器之间缺乏"local_settings.py"的同步,因此存在许多问题。


importd有一些方法可以使这一过程更加简单和标准化。

设置定制有两种类型,选择不同的东西进行开发和生产,例如您想为prod激活statsd,但调试工具栏进行开发。这两个选项都应该签入,这样就不会有人不小心设置了。然后,还有一个设置自定义项,用于不在版本控制系统中存储某些内容,例如密码、访问令牌和密钥。这些
应该通过环境变量进行管理。

,然后还要考虑将设置公开到模板。我们有一个
模板上下文处理器,它可以向模板公开整个设置,但是
这对许多人来说是不舒服的。您可能只想公开在"设置"中描述的
内容的一小部分,并且您希望以最小的麻烦完成此操作。

``importd.env`
----


因此,在app.py中,您可以执行以下操作:

…代码::python

可能有一天,importd会自动检测envdir并设置它。

``env``非常聪明,它需要'default=``和'factory=``。如果传递了``default`
,则环境变量的字符串值将转换为``default``的
``type()`。可以通过传递自己的
``factory``来覆盖此行为,也可以通过传递
``factory=importd.notset``来完全禁用此行为。

``env()``还可以通过转换诸如"false"之类的字符串来处理布尔值/off/no(大小写
不敏感)到python的``false``值(非空字符串变为true,就像
``bool()``那样)。

``importd.debug``
----


代码::python

适当的值取决于我们是否处于调试模式。这和放置if条件一样简单,但它会重复很多次,使用这个快捷方式是值得的。同样,这样事情就不会发生在
的位置,您不需要查找设置文件的上下位置,也不需要在
local_settings.py中查找变量是否已被覆盖。

``importd.e`
----


这允许您"公开"模板中的访问设置。您不应该使用
``"django.core.context-carcessors.settings``作为
`"template-context-carcessors```,而应该使用'`"importd.esettings`` context
预处理器,并且在模板中,您可以访问'`esettings``变量。

若要将变量标记为已公开,必须执行以下操作:
BR/>代码::python

允许您重新使用设置变量。在设置文件中,我们定义变量
,并在需要时重用它们。在importd中,您可以重用定义的设置变量。

…代码::python
from import d import d,s

debug=true,
template_debug=s("debug")


这将把"template_debug"设置变量设置为"debug"值。
``s``将引发``impropertyconfigurederror``异常,如果您试图在键值内使用


…代码::来自import d import d的python

email="foo@example.com",
admins=(s("email"),"hello@example.com")



上面的示例将引发"impropertyconfigurederror"。

``d(debug={})``参数
----


某些设置仅在调试环境中需要,或者需要覆盖,
您可以使用"debug=`"关键字参数来设置设置。

代码::python


d该设置将在适当的环境(调试或生产)中完全删除。


d.openenv(path=none)
----
上述方法将打开当前目录中的envdir目录,并将加载此目录中的所有环境变量。如果path是realpath,即full path
,那么importd将尝试查找指定的路径。如果在路径中指定了相对路径
,那么importd将相对于当前目录。

建议在导入d之后立即调用它。

debug:/prod:prefix for ``installed_apps`` etc
----------


通常情况下,某些应用程序只需要在调试环境中使用,例如
devserver或debug_toolbar。由于"已安装的应用程序"中的应用程序顺序和"中间软件"等很重要,我们最终会复制整个"已安装的应用程序"和"中间件类"等用于prod和dev,然后由于它们位于不同的位置,这种情况往往会出现差异。不好。

…代码::来自import d import d的python

,env
d(
debug=env("is_prod",true)、
installed_apps=[
"django.contrib.contenttypes"、
"django.contrib.auth"、
"django.contrib.sessions"、

"debug:devserver"、
"debug:debug_toolbar"、

"myapp"
]


注意"devserver"和"debug"工具栏中的"debug:"前缀。根据
的"debug"值,是否包含这些行。importd在"中间件类"、"已安装的应用程序"和"模板上下文处理器"中查找字符串


/>
``d.main()``过去不是必需的,现在是。


功能
=


*与django完全兼容
*支持smarturl
*d中可用的大多数常用django函数和类。
命名空间,例如d.httpresponse,d.render_to撸response,d.get撸object或_404 etc
*自动映射foo.py目录中的"templates"文件夹以提供模板
*自动映射foo.py中的"static"文件夹以提供静态内容
*管理命令仍然可用:$python foo.py shell
*符合wsgi
*Gunicorn支持
*与ith fhurl(http://packages.python.org/fhurl/)
*自动添加django调试工具栏(需要手动将其添加到已安装的应用程序)
*自动密钥:如果设置上没有密钥,请尝试从
/secret.txt读取密钥,如果没有,/secret.txt生成随机字符串,然后将其写入
/secret.txt并最终将其作为secret_key返回。
*自动添加coffin/django jinja(jinja2集成)
*支持livereload


bash





















changlog
==




















<
*阿米特upad凯伊(https://github.com/amitu)
*dmytro vorona(https://github.com/alendit)
*jannis leidel(https://twitter.com/jezdez)
*lukasz balcerzak(https://github.com/lukaszb)
*juan carlos(https://github.com/juancarlospaco)
*josep cugat(https://github.com/jcugat)
*yu byunghoo(https://github.com/if1live)
*arpit singh(https://github.com/arpitremarkable)
*hitul mistry(https://github.com/hitul007)


contribution guide
===

``来自pypi。

**拉取请求**:如果您分叉此存储库以发送拉取请求,请为您的工作创建分支,而不是直接在master上工作。这样
您的主人将跟踪我的主人,如果拉取请求被拒绝或
延迟,您的主人将保持干净。这也使得从您的fork发送多个拉取请求变得容易。


许可证
==

importd changelog
===



0.4.3-2015年10月12日
----
*添加了新标记。
*建议先调用d.openenv,然后再在main中调用它。
*不能将额外的python路径作为kwargs添加到d中。

0.4.2-9-oct-2015
----
*未调用中间件的固定进程视图。
*额外的python路径可以作为kwargs参数envdir添加到d中。

0.4.1-2015年9月30日
----
*调用d.dotslash时出现固定属性错误。
*如果已配置,则不自动配置根urlconf

r/>*added importd.env,它检查环境中的密钥,如果不存在,则返回默认值(这样我就不必在任何地方编写此实用程序)
*添加了importd.debug(),它可用于条件设置
*中间件类、已安装的应用程序或模板在外部处理器中查找以"debug:"开头的设置,这些值在
prod中完全删除,在debug中去掉"debug:"前缀。类似地,我们有"prod:"..
*创建了unportd.e(),它可以用来"公开"一些设置到
模板。为了在模板中使用它,添加一个模板上下文处理器
"importd.esettings",这将提供一个名为"esettings"的变量



0.3.3-2015年2月24日---—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————重新删除。



0.3.0-2014年10月27日
----

*将默认的静态根设置从"static"更改为"staticfiles",并将新的默认设置staticfiles目录设置为"static"。这意味着,如果使用collectStatic管理命令,它将从"static"文件夹收集文件并将其复制到"static files"。如果使用外部Web服务器,则必须更改URL http://server/static/的本地路径,以提供来自"static files"文件夹的文件。
*自动添加django调试工具栏:如果成功且不在设置中且数据库存在(调试工具栏需要一个数据库),请尝试导入它并进行调试=true,然后配置调试工具栏。
*自动添加密钥:如果设置上没有密钥,请尝试从/secret.txt读取密钥,如果没有,/secret.txt生成随机字符串,然后将其写入/secret.txt,最后将其作为密钥返回。
*自动添加django.contrib.humanize。
*自动添加django.contrib.staticfiles。
*自动导入get_list_或_404,呈现,从django.shortcuts重定向。
*新功能的固定测试。
*支持django调试工具栏1.2.1
*添加importd样板超链接。
*自动添加coffin/django jinja。
*添加对django1.7和python3.4,删除了对python3.3的支持。
*添加了autoimport关键字参数,以控制是否应自动导入视图等。
*添加了一个类似于蓝图的框架,灵感来自flask



0.2.9-2013年11月10日如果在配置django之前调用,se,d.dotslash()总是返回相同的
配置django后变为
"可用"。适用于配置
模板目录或静态文件等



0.2.7-2013年11月4日
---------

*db kwarg现在可以是字符串或(字符串,dict),在以后的情况下dict将被
合并到dj_database_url.parse()返回的dict中,以支持额外的
设置s django允许eg选项,conn_max_age[这是我在每个项目中特别需要的
,并且不想错过使用dj_数据库url的机会]




<0.2.6-2013年11月4日
----


*支持django 1.6c1



<0.2.5-2013年11月4日
----

*现在在配置时接受db=kward,使用dj_数据库URL解析db



<0.2.4-2013年11月4日
----



*服务管理静态文件的更改



<0.2.3-2013年8月16日
0.2.2-2013年8月12日
----


*支持django 1.3.7
*测试dJango 1.5.2,1.4.6现在。



0.2.1-2013年8月12日
----


*包装损坏,谢谢@jezdez



<0.2.0-2013年8月4日
----

importd删除了
atexit magic,这意味着必须在某个地方包含对d.main()的调用。

…代码块::来自import d import d的python


@d("/"
def hello(请求):
return d.httpresponse("hello world")


if"uu name"uuuuuuuuuu main uu":
d.main();注意这一点

*向后不兼容:删除atexit magic,d.main()是Placement
*gunicorn cleanly exits now
*tests,support django 1.4.3 and 1.5.1 for each of python 2.6,2.7 and 3.3
*更少的魔力,没有更多的sys.modules调整
*runserver现在在任何文件更改时重新加载
*添加了自动生成的清单。in(使用检查清单)
*添加了suppoRT用于将URL安装到自定义位置


<0.1.4-2012年10月22日
----


*setup.py有错误




2012年10月22日
----

*setup.py有错误




0.1.2-2012年8月13日,应用程序目录的计算不正确
*如果未传递数据库,则自动配置数据库
*自动导入。每个已安装的应用程序的视图和.forms将提供所有
@d("pattern")装饰器可见性
*自动导入。每个应用程序中的信号允许信号注册自己,
比从模型中显式导入要好。py与循环导入问题作斗争




0.1.1-2012年8月8日
-------


*将智能URL重构为一个单独的项目



<0.1.0-2012年8月6日
-------


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

推荐PyPI第三方库


热门话题
java如何在饼图的图例中只包含每个类别的长描述?   json Grails应用程序,可以从Java DAO服务访问数据库如何访问控制器中的服务?   java将大型远程数据库表同步到本地数据库表,该表包含字段“lastModificationTime”   java如何在JFrame中创建交互式地图   web服务如何创建异步Java Restlet web服务?   java开始读取特定字节   java在jTable中返回不带SQL的搜索结果(带DAOMock)   jakarta ee java ee MVC模式,模型和视图是否直接相互通信   当由负载平衡器处理时,java Spring引导CSRF失败   java为什么JavaMail连接超时太长   java IzPack需要从安装程序安装JDK/JRE版本   java如何创建一个只接受实现Iterable的元素的方法   java spring数据存储库无法使用idClass保存实体   java如何从列表中删除重复项?   java在SocketChannel中发送大量数据时,影响速度的因素有哪些?   算法分支和绑定错误:节点1无法转换为java。可比的   java使用邮件API从Swing应用程序创建Jar文件   java枚举与简单常量声明?