我有一个简单的模型定义为:
class Article(models.Model):
slug = models.SlugField(max_length=50, unique=True)
title = models.CharField(max_length=100, unique=False)
Run Code Online (Sandbox Code Playgroud)
和形式:
class ArticleForm(ModelForm):
class Meta:
model = Article
Run Code Online (Sandbox Code Playgroud)
当我尝试更新现有行时,验证失败:
if request.method == 'POST':
form = ArticleForm(request.POST)
if form.is_valid(): # POOF
form.save()
Run Code Online (Sandbox Code Playgroud)
创建新条目很好,但是,当我尝试更新任何这些字段时,验证不再通过.
"错误"属性什么也没有,但我进入调试器并深入Django内部,我看到了这个:
slu ::"没有此条款的文章已经存在"
因此看起来is_valid()在唯一值检查上失败,但我想要做的就是更新行.
我不能这样做:
form.save(force_update=True)
Run Code Online (Sandbox Code Playgroud)
...因为表单在验证时会失败.
这看起来很简单,但我无法弄清楚.
我正在运行Django 1.0.2
BaseModelForm.validate_unique()在表单初始化时调用了什么.
假设您有五种产品,并且所有产品都使用公司内部库中的一个或多个,由各个开发人员编写.
这听起来很简单,但在实践中,我发现这是非常难以维持.
您如何处理以下情况:
开发人员无意中引入了一个错误并破坏了生产中的所有内容.
每个库都必须成熟,这意味着API需要不断发展,那么如果每个开发人员在非常忙于其他项目时需要更新/测试他们的代码,那么如何将更新版本部署到生产中?这是资源和时间问题吗?
版本控制,部署和使用.您是将它存储在一个全局位置还是强制每个项目使用,例如,svn:externals来"绑定"一个库?
我发现制定一个好的策略非常困难.我自己的宠物理论是这样的:
每个公共库都必须有一套超级全面的测试,否则它永远不应该是常见的,即使它意味着其他人重复这些努力.重复的未经测试的代码优于常见的未经测试的代码(您只破坏一个项目).
每个公共库都必须有一个专门的维护者(可以通过一个小团队中非常好的测试套件来抵消).
每个项目都应该检查已知可以使用它的库的版本.这意味着随着公共代码的更新,开发人员不必为了更新API使用而被撤下.它会是什么.每一段非常重要的代码都会在数月和数年内发展.
谢谢你对此的看法!
如果我要在 Python 中通过 XMP 标记一堆图像,最好的方法是什么?我使用过 Perl 的Image::ExifTool并且非常习惯它的可靠性。我的意思是这个东西从来没有在数以万计的图像上变砖过。
我发现了这一点,得到了欧洲航天局等一些重量级人物的支持,但它显然被标记为不稳定。
现在,假设我对 C++ 很满意,那么在 Python 中直接使用Adobe XMP 工具包有多容易?以前从未这样做过,我不确定我会注册什么。
更新:我尝试了一些库,包括前面提到的工具包,它们仍然非常不成熟并且存在明显的问题。我实际编写了一个基于 Perl 的服务器,它接受 XML 请求来读取和写入元数据,并使用经过实战测试的 Image::EXIF。代码量实际上非常轻,绝对胜过试图让 Python 库工作来折磨自己。服务器解决方案与语言无关,因此它是双重的。
我想知道是否有任何技术可以识别收集非法使用信息的网络爬虫.简单来说,数据被盗可以创建一个网站的碳副本.
理想情况下,此系统会检测来自未知来源的爬行模式(如果不在列表中使用Google抓取工具等),并向抓取爬虫发送伪造信息.
这就是我迷路的地方 - 如果攻击者将间隔和代理随机化,我怎么能不区分代理和机器从同一网络上攻击网站?
我正在考虑使用javascript和cookie支持来检查可疑代理.如果柏忌无法做到一致,那么这就是坏人.
我还可以做些什么?是否有任何算法,甚至是为快速实时分析历史数据而设计的系统?