我一直在尝试创建一个可以在python中与函数和方法一起使用的装饰器.它本身就不那么难,但是当创建一个带参数的装饰器时,它似乎就是这样.
class methods(object):
def __init__(self, *_methods):
self.methods = _methods
def __call__(self, func):
def inner(request, *args, **kwargs):
print request
return func(request, *args, **kwargs)
return inner
def __get__(self, obj, type=None):
if obj is None:
return self
new_func = self.func.__get__(obj, type)
return self.__class__(new_func)
Run Code Online (Sandbox Code Playgroud)
上面的代码正确地包装了函数/方法,但是在方法的情况下,request参数是它正在操作的实例,而不是第一个非自身参数.
有没有办法判断装饰器是否应用于函数而不是方法,并相应地处理?
我想验证我的用户,因此他们只能在用户名中使用az和 - .
validates_format_of :username, :with => /[a-z]/
Run Code Online (Sandbox Code Playgroud)
但是这个规则也允许空格._ @
Username should use only letters, numbers, spaces, and .-_@ please.
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
最好的祝福.AsbjørnMorell
我非常喜欢SQLAlchemy的功能,它允许您查看对象是否是脏的:如果它是从数据库中检索到的,或者是上次保存的话.
是否有可能从Django ORM中找到这些信息?
请注意,这与django中的脏字段不同,因为我不关心以前的数据是什么,虽然S.Lott的答案可能提供了一种方法,但我想要一种不会触及的方法数据库.
我也看过了django.db.transaction.is_dirty(),但这似乎不是解决方案.
我有一项服务,其中必须检查一些验证规则,然后才能进行特定的操作.
例如,如果未满足所有验证规则,则客户端不应生成可打印的报告.
但是,单个客户端可能没有所有必需的信息(用户可能只能访问用于确定验证成功的数据子集),因此必须将请求发送到服务器:基本上"是" thing在start和之间有效finish."
响应将是某种表示VALID: FEEL FREE TO CONTINUE可以呈现给用户的令牌,或者是验证失败原因的列表.
很明显,成功的验证将返回一个200 OK.但我不认为成功状态代码适合于验证失败.我倾向于a 409 Conflict,但我只是用它来拒绝PUT或者POST.是否有效(窃笑)以a表示验证失败409,或者有更好的方法吗?
注意:执行的操作不是在服务器上执行的,因此403在禁止操作的情况下跳过此检查,只是尝试操作不是一个选项.
我有一个主仓库,它有一些我不想提交的更改.
我有一个subrepo,其中包含已经提交的更改.
我想在我的主仓库中提交更改子订单修订版,而不将更改提交到主仓库中的文件.
我似乎无法做到这一点.我无法提交.hgsubstate,并对要提交的文件进行微不足道的更改,而不会将子寄存器更改提交到主存储库.
使用新的Bitbucket管道功能,如何从它旋转的docker容器SSH到我的分段盒?
我的管道中的最后一步是.sh在登台时部署必要代码的文件,但由于我的登台框使用公钥认证而不知道docker容器,因此SSH连接被拒绝.
无论如何不通过SSH使用密码身份验证来解决这个问题(通过不断选择通过公钥进行身份验证,这也导致了我的问题.)?
我想要做的很简单:
f=Foobar.objects.get(id=1)
foo='somefield'
bar='somevalue'
f.foo=bar
f.save()
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为它试图更新f对象的'foo'字段,当然这不存在.我怎么能做到这一点?
如何从整数除法中获得浮点数或实数值?例如:
double result = 30/233;
Run Code Online (Sandbox Code Playgroud)
收益率为零.我想要带小数位的值.
然后我如何格式化,因此当与字符串一起使用时,只显示两个小数位?
键盘^¨~'`等在Mac OS X上的瑞典键盘上是死键(或半死不活,因为他们开始输入字母然后等待下一个字符直到做出决定).
如何关闭它以使它们完全生效?
我在Mac Leopard上.试图获取django管理文件上传,或真正的图像上传工作.在我的应用程序的models.py中,我将字段设置为:
image = models.FileField(upload_to='images', max_length=500)
Run Code Online (Sandbox Code Playgroud)
(从ImageField开始,但是如果文件不起作用,那么图像肯定不起作用)
它说上传发生了.给我一个积极的结果.保存我的数据库的路径.但是,寻找文件,嗯,它不存在.
由于没有错误消息,因此很难调试.尝试了各种权限,但没有任何工作.
有任何想法吗?