使用mock修补函数时,可以选择将autospec指定为True:
如果设置autospec = True,则使用要替换的对象的规范创建模拟.mock的所有属性也将具有要替换的对象的相应属性的规范.被模拟的方法和函数将检查其参数,如果使用错误的签名调用它们将引发TypeError.
(http://www.voidspace.org.uk/python/mock/patch.html)
我想知道为什么这不是默认行为?当然,我们几乎总是希望将错误的参数传递给我们修补的任何函数?
我正在从旧网站进行迁移,我需要以编程方式将原始html添加到StreamField
Wagtail页面上.我该怎么做?
我正在使用Boto尝试在Amazon S3中获取一个存储桶,但是当我对某些存储桶使用get_bucket()时它返回Bad Request.我开始怀疑这是否是Boto的错误,因为我可以使用get_all_buckets()来获取存储桶.
>>> from boto.s3.connection import S3Connection
>>> conn = S3Connection(S3_ACCESS_KEY, S3_SECRET_KEY)
>>> buckets = conn.get_all_buckets()
>>> buckets
[<Bucket: mysite-backups>]
>>> buckets[0]
<Bucket: mysite-backups>
>>> conn.get_bucket('mysite-backups')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/path/to/virtualenv/lib/python2.7/site-packages/boto/s3/connection.py", line 502, in get_bucket
return self.head_bucket(bucket_name, headers=headers)
File "/path/to/virtualenv/lib/python2.7/site-packages/boto/s3/connection.py", line 549, in head_bucket
response.status, response.reason, body)
S3ResponseError: S3ResponseError: 400 Bad Request
>>> conn.create_bucket('mysite_mybucket')
<Bucket: mysite_mybucket>
>>> conn.get_bucket('mysite_mybucket')
<Bucket: mysite_mybucket>
Run Code Online (Sandbox Code Playgroud)
这似乎是一个问题,即使我使用相同的用户帐户登录,因为我正在使用访问信用卡并在AWS控制台中创建它.
知道为什么会这样吗?
我想使用Mailchimp API 2.0和官方mailchimp python包将用户订阅到列表.我找不到任何关于如何的直接文档.
这是我在mod_wsgi中运行Django 1.7的所有网站上遇到的问题.该问题的核心是,如果在本地开发时,我在代码库中引入致命错误,然后随后对其进行更正,则代码监视脚本不会检测到更正.
我使用Graham Dumpleton的monitor.py脚本来检测我在本地开发时对代码库的更改(我使用apache而不是Django开发服务器).
它总是用于Django <= 1.6,但在Django 1.7中我收到以下错误:
File "/home/me/.virtualenvs/myvirtualenv/lib/python2.7/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
django.setup()
File "/home/me/virtualenvs/myvirtualenv/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/me/.virtualenvs/myvirtualenv/lib/python2.7/site-packages/django/apps/registry.py", line 78, in populate
raise RuntimeError("populate() isn't reentrant")
RuntimeError: populate() isn't reentrant
Run Code Online (Sandbox Code Playgroud)
令人恼火的是,如果我更正错误,monitor.py不会检测到更改,所以我必须重新启动apache,或者触摸已经加载的另一个文件(例如设置文件).
我认为这是因为"重载代码只监视导入的文件(也称为sys.modules)"(源代码).因此,由于未成功导入错误的文件,monitor.py无法重新启动该进程.
在Python中,假设我的日期为2016年12月25日.如何在该日期创建一个时区感知日期时间?
如果它与Django的时区处理兼容,则奖励积分.
我在Webfaction共享主机上运行Django 1.8.4,我需要启用GeoDjango.这些是我采取的步骤:
跑./manage.py migrate
.这是错误:
django.db.utils.OperationalError: could not open extension control file "/usr/pgsql-9.1/share/extension/postgis.control": No such file or `directory
Run Code Online (Sandbox Code Playgroud)django-import-export的文档在如何配置管理员从电子表格导入方面有点薄弱。有人有完整的例子吗?
假设我有两个模型,在不同的应用程序中。应用二知道应用一,但不知道相反:
# one/models.py
from django.db import models
class One(models.Model):
pass
# two/models.py
from django.db import models
from one.models import One
class Two(models.Model):
one = models.ForeignKey(One)
Run Code Online (Sandbox Code Playgroud)
我也在One
管理站点注册:
# one/admin.py
from django.contrib import admin
from .models import One
admin.site.register(One)
Run Code Online (Sandbox Code Playgroud)
如何Two
在One
的管理页面上注册为 Inline ,而不在两个应用程序之间引入循环依赖?
假设我想扩展以下Python类,其中包括一个我不太了解的装饰器:
from somewhere import some_decorator
class One(object):
@some_decorator
def some_method(self):
do_something()
Run Code Online (Sandbox Code Playgroud)
我应该装饰覆盖的方法吗?换句话说,我可以安全地执行以下操作:
class Two(One):
def some_method(self):
super(Two, self).some_method()
Run Code Online (Sandbox Code Playgroud)
还是我需要做:
class Two(One):
@some_decorator
def some_method(self):
super(Two, self).some_method()
Run Code Online (Sandbox Code Playgroud) 如果可以在django模板中使用sorl-thumbnail创建以下缩略图,我无法解决:
如果我能分两步完成,我会:
我能做的最好的就是这样,宽度看起来不错但不会裁剪高度.
{% thumbnail banner "1010" crop="center" as im %}<img id='banner' src='{{ im.url }}'/>{% endthumbnail %}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我想ListAPIView
使用此处描述的过滤技术来限制 a 返回的查询集。
问题是,如何处理无效参数?引发 ValidationError 仅适用于序列化程序,不适用于 ViewSet。我想让用户知道请求无效,而不是默默地失败。
例如:
class PurchaseList(generics.ListAPIView):
serializer_class = PurchaseSerializer
def get_queryset(self):
queryset = Purchase.objects.all()
username = self.request.query_params.get('username', None)
if username is not None:
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
# How do I handle this invalid parameter?
else:
queryset = queryset.filter(purchaser=user)
return queryset
Run Code Online (Sandbox Code Playgroud) django ×7
python ×5
amazon-s3 ×1
apache ×1
boto ×1
django-admin ×1
geodjango ×1
mailchimp ×1
mocking ×1
mod-wsgi ×1
oop ×1
postgis ×1
postgresql ×1
timezone ×1
unit-testing ×1
wagtail ×1
webfaction ×1