我的文件static夹中有javascript文件.Django发现并加载它们非常好,所以我认为我的static选项配置没有任何问题.但是,有时当我对.js文件进行更改并保存时,使用它的Django模板不会反映这些更改 - 使用浏览器检查javascript会在上次保存之前显示javascript.重新启动服务器什么都不做,但重新启动计算机有时可以解决问题.我没有任何明确处理缓存的代码.有没有人经历过这样的事情?
我有一个日期名称列表(通常是周一至周六,但特殊情况适用),我想创建一个字典.我想将每天的值初始化为零.
如果我有一个零列表与日期列表相同的长度,这将是一个简单的用例zip().但是,零列表是浪费空间,如果这是唯一的解决方案,我会尽快做到:
for day in weekList:
dayDict[day] = 0
Run Code Online (Sandbox Code Playgroud)
有更多的pythonic方式吗?
Python Docx是一个非常好的库,用于为不直接处理所有COM内容的东西生成Microsoft Word文档.尽管如此,我遇到了一些限制.
我想要一个段落有多行,而它们之间没有额外的空格.但是,写出一个用通常的线分隔线的字符串\n是行不通的.也没有使用
或
.还有其他任何想法,或者这个框架对于类似的东西来说太有限了?
我一直在阅读虚拟环境,它似乎是一个非常有用的工具,但现在我质疑我到目前为止如何设置我的整个python环境.现在,我安装的所有模块和软件包都驻留在这个目录中:
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)
但virtualenv文档似乎暗示这种通用系统安装是一件坏事.如果是这种情况,那么我应该如何处理我当前的模块以及如何安装未来的模块?例如,我最近使用以下命令从我的用户目录安装了flask:
pip install flask
Run Code Online (Sandbox Code Playgroud)
它现在位于站点包中.我应该做些不同的事吗?我在使用文档时遇到了问题,这似乎表明我需要进入项目目录,设置虚拟环境,并使用virtualenv安装我需要的所有模块.是这样的吗?有什么方法可以减少麻烦吗?似乎为每个项目目录安装可能有数十个软件包会有点多.
或者我只需要为使用旧版本模块的项目创建虚拟环境而不是我在系统目录中安装的模块?然而,如果是这种情况,那么怎么了virtualenv口头禅似乎阻止所有系统安装呢?
我一直在寻找一些关于Python的开源项目,我看到了很多我不熟悉的文件和模式.
首先,很多项目只有一个名为的文件setup.py,通常包含一个函数:
setup(blah, blah, blah)
Run Code Online (Sandbox Code Playgroud)
其次,很多包含一个简单调用的文件,__init__.py旁边没有任何信息.
第三,一些.py文件包含类似于此的语句:
if __name__ == "__main__"
Run Code Online (Sandbox Code Playgroud)
最后,我想知道是否有任何"最佳实践"用于在git存储库中划分Python文件.使用Java,由于类结构,文件分割的想法很自然.使用Python,许多脚本根本没有类,有时一个程序会有OOP方面,但是逐类分类并没有多大意义.它只是"无论是什么使代码最具可读性",还是有某些指导方针?
有人知道vim中的任何技巧都可以轻松交换两行代码吗?我知道交换相邻的线路是微不足道的,但是假设我想将第23行与第52行交换.这是可以实现的吗?
我试图弄清楚到底是如何scanf工作的。如果我编写这样的代码:
scanf("%s %d %f", name, &age, &wage);
Run Code Online (Sandbox Code Playgroud)
将此作为标准输入输入:
james 20 34000.25
Run Code Online (Sandbox Code Playgroud)
然后分别打印出姓名、年龄和工资,我得到的正是人们所期望的,与我输入标准输入的内容相同。但是,如果我输入这样的内容:
scanf("%s/%d/%f", name, &age, &wage);
Run Code Online (Sandbox Code Playgroud)
我将其作为标准输入输入:
james/20/34000.25
Run Code Online (Sandbox Code Playgroud)
我得到james/20/34000.25字符串值的字符串和整数和浮点值的 0 和 0.00000。我认为scanf会像对待第一个版本中的空格一样对待斜杠。如果用户输入斜杠分隔值,我将如何获得它,我可以适当地将值分配给变量?
我正在使用Mock库嘲笑Django的send_mail函数:
from django.core.mail import send_mail
send_mail = Mock()
Run Code Online (Sandbox Code Playgroud)
当我想断言send_mail被调用时,我的问题出现了.我不能使用assert_called_with或相关的方法,因为他们期望参数,我不会完全知道/不想在测试环境中输入(它涉及模板).我只是想知道已经调用的方法.打印语句清楚地表明它被调用,但如果我尝试这样做:
self.assertEqual(send_mail.called, True)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,因为被调用的属性仍为False.如何在不必指定属性的情况下测试方法是否已被测试.
可能重复:
获取字典中最大值的键?
假设我有一个由整数键和整数值组成的字典.我想找到具有最高对应值的整数键.有没有内置的方法来做这样的事情或我需要实现某种合并/排序算法?
我和具有多个芹菜工人软件导向架构的工作(我们姑且称之为worker1,worker2和worker3).所有三个工作者都是独立的实体(即,单独的代码库,单独的存储库,单独的芹菜实例,单独的机器),并且它们都没有连接到Django应用程序.
与这三个工作者中的每一个进行通信的是基于Django的MySQL支持的RESTful API.
在开发过程中,这些服务都在一个流浪盒上,每个服务器都作为一个单独的端口运行的独立机器.我们为所有Celery任务提供了一个RabbitMQ代理.
通过这些服务的典型路径可能如下所示:worker1从设备获取消息,执行某些处理,对任务进行排队worker2,进行进一步处理并对其进行POST API,从而写入MySQL数据库并触发任务on worker3,它执行一些其他处理并对其进行另一个POST,API从而导致MySQL写入.
服务沟通很好,但每次我们对任何服务进行更改时测试此流程都非常烦人.我真的希望得到一些完整的集成测试(即,从发送到worker1整个链的消息开始),但我不知道从哪里开始.我面临的主要问题是:
如果我排队worker1,我怎么能分辨出整个流程何时结束?当我不知道结果是否已经到达时,如何对结果做出合理的断言呢?
如何处理数据库设置/拆除?我希望在每次测试结束时删除测试期间所有条目,但如果我从Django应用程序外部开始测试,我不确定如何有效地清除它.手动删除它并在每次测试后重新创建它似乎可能是太多的开销.
python ×8
django ×3
c ×1
celery ×1
dictionary ×1
editor ×1
integration ×1
list ×1
mocking ×1
python-docx ×1
unit-testing ×1
unix ×1
vi ×1
vim ×1
virtualenv ×1