如何定义Android 1.5及更高版本的两个活动之间的转换?我希望活动能够淡出.
我想创建一个python函数,允许我迭代从起点到停止点的几个月.例如,它看起来像
def months(start_month, start_year, end_month, end_year):
Run Code Online (Sandbox Code Playgroud)
呼叫months(8, 2010, 3, 2011)将返回:
((8, 2010), (9, 2010), (10, 2010), (11, 2010), (12, 2010), (1, 2011), (2, 2011), (3, 2011))
Run Code Online (Sandbox Code Playgroud)
该函数可以返回一个元组元组,但我希望将其视为生成器(即使用yield).
我检查了calendarpython模块,它似乎没有提供此功能.我可以写一个令人讨厌的for循环来轻松地完成它,但我很想知道专业人员可以做得多么优雅.
谢谢.
我正在尝试为执行大量日期操作的django应用程序编写单元测试.我为我的测试安装了模拟猴子补丁django的timezone.now.
虽然我能够成功地嘲笑timezone.now时,它通常被称为(实际调用timezone.now()在我的代码,我不能嘲笑它为与一个创建的模型DateTimeField用default=timezone.now.
我有一个User包含以下内容的模型:
from django.utils import timezone
...
timestamp = models.DateTimeField(default=timezone.now)
modified = models.DateTimeField(default=timezone.now)
...
def save(self, *args, **kwargs):
if kwargs.pop('modified', True):
self.modified = timezone.now()
super(User, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
我的单元测试看起来像这样:
from django.utils import timezone
def test_created(self):
dt = datetime(2010, 1, 1, tzinfo=timezone.utc)
with patch.object(timezone, 'now', return_value=dt):
user = User.objects.create(username='test')
self.assertEquals(user.modified, dt)
self.assertEquals(user.timestamp, dt)
Run Code Online (Sandbox Code Playgroud)
assertEquals(user.modified, dt)通过,但assertEquals(user.timestamp, dt)没有.
我怎么能模仿timezone.now,即使default=timezone.now在我的模型中也会创建模拟时间?
编辑
我知道我可以改变我的单元测试以通过timestamp …
我创建了一个自定义包含模板标记,它接受单个Update模型对象.
模板标签:
@register.inclusion_tag('update_line.html')
def update_line(update):
return {'update': update}
Run Code Online (Sandbox Code Playgroud)
update_line.html:
<tr><td class="update">{{ update }}</td><td class="ack">
<img id="update-{{ update.pk }}" class="ack-img" src="{{ STATIC_URL }}img/acknowledge.png" alt="Acknowledge" /></td></tr>
Run Code Online (Sandbox Code Playgroud)
问题是{{ STATIC_URL }}我的包含模板标签模板中没有这个问题,即使我正在使用django.core.context_processors.static上下文处理器,因此{{ STATIC_URL }}我可以使用所有未通过包含模板标签处理的"普通"模板.
有没有一种方法可以STATIC_URL从我的包含模板标签模板中获取,而不会做一些令人讨厌的事情,比如手动从设置中获取并明确地将其作为上下文变量传递?
我有以下django网址:
url(r'^companies/$', 'companies', name='companies'),
Run Code Online (Sandbox Code Playgroud)
如果我去http://localhost:8000/companies/它完美的工作.但是,如果我尝试向URL添加任何GET变量,则django会引发404.例如,如果我去http://localhost:8000/companies/?c=1django会引发404.有什么奇怪的,就是在404上它说:
当前的URL
companies/与任何这些都不匹配.
为什么我无法将GET变量传递给我的网址?
我正在使用django 1.4.
公司视图定义如下:
def companies(request):
Run Code Online (Sandbox Code Playgroud)
它不应该接受任何其他参数,因为它们是GET变量,而不是URL参数 - 正确吗?我发誓我已经完成了数百次,它总是有效......
我正在开发一个项目,要求我以编程方式从django应用程序创建MySQL用户.我可以很好地创建用户:
from django.db import connection, transaction
cursor = connection.cursor()
cursor.execute("CREATE USER %s@'%'", 'username')
cursor.execute("SET PASSWORD FOR %s@'%' = PASSWORD(%s)", ('username', 'pass'))
Run Code Online (Sandbox Code Playgroud)
这非常有效.问题是当我尝试授予权限时.数据库名称也以编程方式确定:
cursor.execute("GRANT SELECT ON %s.* TO %s@'%'", ('dbname', 'username'))
Run Code Online (Sandbox Code Playgroud)
这会导致mysql错误,因为当它执行字符串替换时,它会在数据库名称周围放置单引号,这在语法上是不正确的:
DatabaseError:(1064,"你的SQL语法有错误;请查看与你的MySQL服务器版本相对应的手册,以便在第1行使用''dbname'.*''username'@'%'附近的正确语法")
如何防止在%sfor数据库名称周围添加单引号?我知道我可以简单地在Python中进行字符串替换并修复它,但这可能会导致SQL注入漏洞.
我有一个 django 视图,我想返回一个 Excel 文件。代码如下:
def get_template(request, spec_pk):
spec = get_object_or_404(Spec, pk=spec_pk)
response = HttpResponse(spec.get_template(), mimetype='application/ms-excel')
response['Content-Disposition'] = 'attachment; filename=%s_template.xls' % spec.name
return response
Run Code Online (Sandbox Code Playgroud)
在该示例中, 的类型spec.get_template()包含<type 'bytearray'>Excel 电子表格的二进制数据。
问题是,当我尝试下载该视图并使用 Excel 打开它时,它会以乱码二进制数据的形式出现。我知道这bytearray是正确的,因为如果我执行以下操作:
f = open('temp.xls', 'wb')
f.write(spec.get_template())
Run Code Online (Sandbox Code Playgroud)
temp.xls我可以在Excel中完美打开。
我什至将我的观点修改为:
def get_template(request, spec_pk):
spec = get_object_or_404(Spec, pk=spec_pk)
f = open('/home/user/temp.xls', 'wb')
f.write(spec.get_template())
f.close()
f = open('/home/user/temp.xls', 'rb')
response = HttpResponse(f.read(), mimetype='application/ms-excel')
response['Content-Disposition'] = 'attachment; filename=%s_template.xls' % spec.name
return response
Run Code Online (Sandbox Code Playgroud)
它运行完美 - 我可以从浏览器将 xls 文件打开到 Excel,一切正常。 …
我在 Sqlite 中有一个查询涉及复杂的列计算,比方说:
SELECT 1+1 AS a;
Run Code Online (Sandbox Code Playgroud)
我想将此计算选择为a,但我还需要将其用作另一个计算的组成部分:
SELECT 1+1 AS a, a+2 AS b;
Run Code Online (Sandbox Code Playgroud)
不幸的是这会产生错误:
Error: no such column: a
Run Code Online (Sandbox Code Playgroud)
我知道我可以简单地再次重复计算b:
SELECT 1+1 AS a, 1+1+2 AS b;
Run Code Online (Sandbox Code Playgroud)
但假设1+1是一些复杂且昂贵的操作,有什么方法可以让我稍后引用它而SELECT不必重新计算它?
我有一个模型FileField:
class FileModel(models.Model):
name = models.CharField(max_length=100)
description = models.CharField(max_length=200)
file = models.FileField(upload_to='myfiles')
Run Code Online (Sandbox Code Playgroud)
当您使用a删除模型实例时FileField,django不会自动从文件系统中删除基础文件,因此我设置了一个信号来删除基础文件post_delete:
def on_delete(sender, instance, **kwargs):
instance.file.delete()
models.signals.post_delete.connect(on_delete, sender=FileModel)
Run Code Online (Sandbox Code Playgroud)
问题是,当我删除一个FileModel对象(比如说来自django管理页面)时,它会从文件系统中删除该文件,但不会删除该模型.如果我再次删除它,它会删除模型,但在尝试从文件系统中删除文件时会引发异常,因为该文件不存在.
当我更改文件删除时,pre_delete而不是post_delete它应该行为.我能想到的唯一可能导致此行为的是,如果从FileField自动保存模型中删除文件,则会导致重新创建该模型post_delete.
所以我的问题是:为什么调用一个FileField删除方法来post_delete阻止模型被删除?
我正在寻找一种优雅和pythonic的方式来获得上一季度结束的日期.
像这样的东西:
def previous_quarter(reference_date):
...
>>> previous_quarter(datetime.date(2013, 5, 31))
datetime.date(2013, 3, 31)
>>> previous_quarter(datetime.date(2013, 2, 1))
datetime.date(2012, 12, 31)
>>> previous_quarter(datetime.date(2013, 3, 31))
datetime.date(2012, 12, 31)
>>> previous_quarter(datetime.date(2013, 11, 1))
datetime.date(2013, 9, 30)
Run Code Online (Sandbox Code Playgroud)
编辑:我尝试过什么吗?
是的,这似乎有效:
def previous_quarter(ref_date):
current_date = ref_date - timedelta(days=1)
while current_date.month % 3:
current_date -= timedelta(days=1)
return current_date
Run Code Online (Sandbox Code Playgroud)
但它似乎是不必要的迭代.
django ×6
python ×5
android ×1
mocking ×1
mysql ×1
mysql-python ×1
python-mock ×1
sql ×1
sqlite ×1
transition ×1
unit-testing ×1