我不确定如何在模型的保存方法中正确引发验证错误,并向用户发回明确的消息.
基本上我想知道"if"的每个部分应该如何结束,我想要引发错误的部分和它实际保存的部分:
def save(self, *args, **kwargs):
if not good_enough_to_be_saved:
raise ValidationError
else:
super(Model, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
然后我想知道该怎么做才能发送一个验证错误,该错误确切地告诉用户错误就像Django自动返回的那样,例如,如果某个值不唯一.我正在使用(ModelForm)并从模型中调整所有内容.
我有一个Web服务器,它服务于一个git存储库的项目.当我对代码进行一些更改时,然后从服务器执行git pull.有时新代码崩溃,我希望能够回滚到最新的拉动,就在之前.我想用脚本做到这一点,而不必搜索最新的sha.我怎样才能做到这一点?
编辑:只是为了澄清,我只想做一个动作,比如按下一个按钮,说"哎呀!我刚刚做的最新拉动是一个错误,我希望我没有这样做".我不想在这种情况下寻找sha或标签或其他任何东西,它更像是一个'撤消'功能.然后我希望能够继续处理代码,并且服务器上的下一次拉动需要带来最新的更改.
我有一个'喜欢'的功能,就像社交网络或赞成功能; 用户点击星标/心脏/任何内容以标记所喜欢的内容.它是用ajax完成的,必须很快.这里唯一的问题是,由于某些原因,我必须为每个'喜欢'做一些任务,我发现它们是在'喜欢'视图中直接编码而且它使它变慢.我正在考虑使用信号来使这些任务的执行异步,因此视图可以立即将json发送回javascript,而无需等待任务完成.我开始为'喜欢'创建一个信号但后来发现Django的信号不是异步的,它最终会一样,视图必须等待信号完成才能发回它的响应.所以我可以尝试使该信号异步,因为它在这里和那里解释但我也会使用post_save信号为'like'模型,但现在我想知道视图是否可以在信号执行之前完成?
我创建了一个带有外键的模型:
class Book(models.Model):
library = models.ForeignKey(Library, null=False, blank=False)
...
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个带有ModelForm的表单,以显示给用户:
class BookSubmitForm(ModelForm):
class Meta:
model = Book
Run Code Online (Sandbox Code Playgroud)
当我显示带有表单的页面时,我会获得库选项,但也会默认显示空白(--------)选项.
我认为在模型中使用null = False和blank = False可以摆脱ModelForm中的空白选择但是没有.我该怎么做只在列表中有实际选择而不是那个?
前段时间我从我的master
分公司创建了一个分支.我们称之为new_feature
.在我工作的时候new_feature
,master
分支跟随其正常演变.现在new_feature
已经准备好合并到master
我看到一些冲突,所有这些冲突都是与实际新功能完全无关的文件(比如一些配置文件和已更改的喜欢master
).我将手动解决冲突,但我想知道,因为这是一种经常发生的情况,我如何才能将new_feature
分支合并到master
同时始终保持master
文件的版本以防出现冲突?
我确信这很简单并且与"保留版本"有关,但因为它是一个非常敏感的主题,我宁愿问,也不要抱歉.
我想创建一个查询集,其中当前用户用作ModelForm中的过滤器:
class BookSubmitForm(ModelForm):
book = forms.ModelChoiceField(queryset=Book.objects.filter(owner=request.user),)
...
Run Code Online (Sandbox Code Playgroud)
Django是否将请求传递给表单?这是好习惯吗?我该如何使用该请求?(当然没有定义名称请求)
编辑:
我尝试了另一个解决方案,即在视图中调用表单传递请求:
form = BookSubmitForm(request)
Run Code Online (Sandbox Code Playgroud)
然后在我使用的形式:
class BookSubmitForm(ModelForm):
def __init__(self, request, *args, **kwargs):
super(BookSubmitForm, self).__init__(*args, **kwargs)
self.fields["library"].queryset = Library.objects.filter(owner=request.user)
Run Code Online (Sandbox Code Playgroud)
它工作,代码在表单中.现在我不确定它是最好的解决方案,它可以改进吗?
我有一个流浪汉VM,我已经从主机(ubuntu)共享了一个文件夹(我的代码仓库)到vagrant使用config.vm.share_folder
.我想对我在vagrant机器(虚拟环境)中创建的文件夹执行相反的操作.我想将其共享回主机.我怎样才能做到这一点?
我试图将以下内容添加到vagrant文件中:config.vm.share_folder "virtualenv", "/home/vagrant/devenv", "../virtualenv"
分别指向vagrant机器上的虚拟环境和主机上的空文件夹.当我流浪并查看主机上的文件夹内部时,我希望看到流浪汉机器内虚拟环境的内容,但该文件夹保持空白.当我进入流浪汉机器并查看虚拟环境文件夹时,它变空了.取消激活此设置可恢复流浪汉机器上文件夹的内容.
我有一个Vagrant文件,它只显示一个基本的Ubuntu服务器,然后依赖shell脚本来进行配置.这个shell脚本只是安装Docker和Docker Compose来设置我拥有的各种容器.
使用shell脚本执行此操作是否有意义?或者有没有办法告诉Vagrant直接使用Docker Compose进行配置?我不知道与Vagrant中现有的Docker配置器有多么不同.
我有要在AWS中使用Terraform部署的基础架构。该基础架构可以部署到我正在使用工作空间的不同环境中。
应该为每个工作区分别创建部署中的大多数组件,但是我希望在它们之间共享几个关键组件,主要是:
例如:
resource "aws_iam_role" "lambda_iam_role" {
name = "LambdaGeneralRole"
policy = <...>
}
resource "aws_lambda_function" "my_lambda" {
function_name = "lambda-${terraform.workspace}"
role = "${aws_iam_role.lambda_iam_role.arn}"
}
Run Code Online (Sandbox Code Playgroud)
第一个资源是IAM角色,应在该Lambda的所有实例之间共享,并且不应重复创建一次。
第二个资源是Lambda函数,其名称取决于当前工作空间,因此每个工作空间都将部署并跟踪不同Lambda的状态。
如何在不同的Terraform工作空间之间共享资源及其状态?
在做完虚拟环境的源代码之后我试试
pip install -U --no-deps django-social-auth
Run Code Online (Sandbox Code Playgroud)
它返回:
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.6/dist-packages/django_social_auth-0.6.9-py2.6.egg-info/dependency_links.txt'
Run Code Online (Sandbox Code Playgroud)
为什么要在virtualenv之外写作?