我有一个对象LeatherChair在Django,这让我懊恼的是Django的给它一个object_name的leatherchair.我希望它是leather_chair一个下划线.
在object_name似乎是存储在Options实例中,但如何改变这种状况?
我有一个美元的价格,Decimal精确度为.01(到分).
我想以字符串格式显示它,就像有消息一样 "You have just bought an item that cost $54.12."
问题是,如果价格恰好是圆形的,我只想展示它没有美分,就像$54.
我怎样才能在Python中实现这一目标?请注意,我使用的是Python 2.7,所以我很乐意使用新式而不是旧式的字符串格式.
我正在寻找一个我希望有人建立的软件.我将在这里描述这个软件,希望有人听到这样的事情,并指出我正确的方向.
我正在开发一个部署在Heroku上的Web应用程序.由于Heroku的限制,我被置于不幸的情况下,有四(4)个远程Git回购用于同一个回购.
为什么四个?
我们在Heroku上有多个"应用程序".一个用于制作和一些升级"应用程序".这些都是针对相同的实际应用程序,但在Heroku上它们是独立的"应用程序",因此我们可以在将它们推向生产之前尝试进行分段.
Heroku上的每个应用程序都有自己独立的Git仓库,并在master每次将新提交推送到该master分支时自动部署分支.Heroku的这项政策是我们问题的症结所在.因为这意味着我们在Heroku上有3个不同的回购,加上我们的GitHub回购.
为什么有4个不同的Git遥控器有问题?因为这意味着当您开发和创建新提交时,您必须(1)仅推送到一个遥控器或(2)推送到所有遥控器.
做(1)意味着要考虑你想要推送哪个遥控器.我讨厌不得不考虑这个问题.当我开发时,我不关心遥控器,我承诺并推动并重新开始工作.例如,如果我想将分支部署到临时服务器1,我会将该分支合并到staging_1分支中并推送它.我不喜欢挑选哪个遥控器.
(1)的另一个缺点是你的遥控器不同步.
我想要的是(2).我希望每一次推动都能推动我们所有的四个回购.
但是有两个问题:
问题1:Heroku上的暂存"应用程序"部署了什么master.我不希望他们这样做.我想将staging_1我的仓库中的master分支映射到登台服务器Git repo上的分支.
问题2:将计算机推到所有4个回购站需要很长时间.即使1个Heroku推动动作也需要很长时间.有时可能需要40秒.
这就是我想要的.我想有一个专门的Git服务器充当代理.每当我从本地计算机推送到这个Git服务器时,它会将这些相同的分支并行地推送到我们的4个存储库中.这样,从我本地计算机的角度来看,推送似乎是即时的,而这个代理服务器将自动在后台处理Heroku存储库.
如果由于任何原因推送到4个遥控器中的任何一个失败,我希望这个代理以某种方式报告,所以我会知道某些东西被破坏并且可以解决它.
该代理必须做的另一件事是master映射.每次我将staging_1分支推送到它时,它都会将其推staging_1送到所有远程控制器,但是对于属于登台服务器的远程控制器,它也将推送该分支master,因此Heroku将知道部署它.
(令人非常难过的是Heroku的设计方式让我需要像这样的代理,但这就是我必须要处理的事情.)
就是这样了.这是我想要的解决方案.有谁知道这样的节目?
我的网络应用程序生成ics文件.这些可以由Google Calender成功读取,但不能通过iCal读取,iCal会显示错误"iCal无法读取此日历文件.您的iCal日历中未添加任何事件.".
为什么我的ics文件没有加载到iCal中?
这是文件内容:
BEGIN:VCALENDAR
VERSION:1.0
PRODID:-//Third Workplace//EN
BEGIN:VEVENT
SUMMARY:Meeting at Third Workplace in Office #4
DTSTART;TZID=UTC;VALUE=DATE-TIME:20120820T160000Z
DTEND;TZID=UTC;VALUE=DATE-TIME:20120820T170000Z
DTSTAMP;VALUE=DATE-TIME:20120820T084134
UID:65---eede0aac722e48979bd2237814da9e3d@thirdworkplace.com
LOCATION:Office #4 at Third Workplace Contra Costa Centre
ORGANIZER:MAILTO:ram@rachum.com
END:VEVENT
END:VCALENDAR
Run Code Online (Sandbox Code Playgroud)
这是原始的二进制版本.
我想要能够分析函数调用的代码,如下所示:
whatever(foo, baz(), 'puppet', 24+2, meow=3, *meowargs, **meowargs)
Run Code Online (Sandbox Code Playgroud)
和回报每一位争论的位置,在这种情况下foo,baz(),'puppet',24+2,meow=3,*meowargs,**meowargs.
我尝试使用该_ast模块,它似乎只是工作的事情,但不幸的是有问题.例如,在一个像baz()函数调用本身的参数中,我找不到一种简单的方法来获取它的长度.(即使我找到了一个,我也不想为每种不同的论点提出一些特殊情况.)
我也查看了tokenize模块,但无法看到如何使用它来获取参数.
不知道怎么解决这个问题?
有没有办法在Python中urlencode/urldecode一个字符串?我想强调我想要一个字符串,而不是一个字符串dict.我知道这样做的功能dict.我可以轻松地构造一个函数来为字符串做这个,但我宁愿不必构造自己的函数.Python内置了这个功能吗?
(对Python 2.7和3.3的答案将不胜感激.)
我有一个带有ManyToMany的模型A来模型B.我有一个模型B的对象的pk,我想将它添加到模型A的对象的ManyToManyField.是否可以添加它而不需要花费资源来获取对象b来自数据库?我已经有了它的pk,我可以在不提取的情况下添加吗?
Django有一个很棒的调试页面,只要代码中有异常就会显示出来.该页面紧凑地显示了堆栈中的所有级别,您可以扩展您感兴趣的任何级别.它仅在调试模式下显示.
当实际用户在生产服务器上遇到错误时,Django还具有发送电子邮件报告的强大功能.这些报告的堆栈跟踪信息比样式化的调试页面少得多.
有一个很棒的可选设置'include_html': True,使电子邮件包含调试页面的所有信息,这是非常有用的.这个设置的问题是HTML显然没有样式,所以堆栈的所有级别都被扩展以显示它们包含的所有数据.
这会产生如此长的电子邮件,以至于GMail通常无法在不将您发送到专用视图的情况下显示它.但真正的问题是它太大而无法导航并找到所需的堆栈级别.
我想要的是:我希望Django发送详细的堆栈跟踪,但我希望堆栈的级别可以像调试页面一样进行折叠.我怎样才能做到这一点?
(不,我不想使用Sentry.)
Django允许我这样做:
chair = Chair.objects.filter(name__endswith='hello')
Run Code Online (Sandbox Code Playgroud)
但我想这样做:
chair = Chair.objects.filter(name__isendof='hello')
Run Code Online (Sandbox Code Playgroud)
我知道查找__isendof不存在.但是我想要这样的东西.我希望它与之相反__endswith.它应该找到所有这样的椅子'hello'.endswith(chair.name).
可能在Django?ORM操作比SQL操作更好.
我正在使用Selenium和PhantomJS测试我的Django应用程序.我正在调试测试失败.有没有办法让无头的PhantomJS突然像屏幕上的真实浏览器一样显示,这样我就可以轻松调试问题了?