小编A C*_*pos的帖子

在 Django 中命名基于类的视图是否有错误的方法?

这是一个关于代码风格和最佳实践的问题。

在我们的 Django 项目中,我们有基于类的视图,其命名如下:

urls.py

path('project/<int:pk>/clone/', CloneView.as_view(), name='clone'),
path('project/<int:pk>/delete/', ProjectDelete.as_view(), name='project-delete'),
path('project/<int:pk>/optimize/', ProjectOptimize.as_view(), name='project-optimize'),
path('project/<int:pk>/report/', ReportView.as_view(), name='report'),
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,其中一些我们会说MyClassView.as_view(),而另一些我们只是说MyClass.as_view()。但我也注意到,在文档中,他们总是使用第一种形式: https: //docs.djangoproject.com/en/2.2/topics/class-based-views/ 引起我注意的是我们从不使用视图名称,例如:name=clone-name

我的问题是:在类名中明确说明该类是一个视图有什么明显的优点吗?不使用它是“错误”吗?

我想保持我们的代码库一致。谢谢你们!

django

5
推荐指数
1
解决办法
604
查看次数

Jupyter Notebooks:更新的包不会在笔记本内更新

我对某些 Pandas 操作感到烦恼,有人建议将其升级到最新版本可能会解决问题。\n我将其从版本 0.24.1 更新到 0.25.3

\n\n

当我检查虚拟环境中的版本时,我得到:

\n\n
(matrix) \xe2\x9e\x9c  web git:(T24_2019) pip freeze | grep pandas\npandas==0.25.3\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是当我在笔记本中做同样的事情时,我得到:

\n\n
pandas==0.23.4\nNote: you may need to restart the kernel to use updated packages.\n
Run Code Online (Sandbox Code Playgroud)\n\n

我确实重启了很多次内核,但从来没有成功过。\n有没有具体的重启方法?这与 iPython 安装了我的软件包的其他版本有什么关系吗?

\n\n

注意:我不使用 Anaconda。

\n\n

谢谢你!

\n

python ipython jupyter-notebook

5
推荐指数
1
解决办法
1万
查看次数

AWS RDS 数据库版本与 Terraform 版本不同

我正在学习如何使用 Terraform 来管理我的 AWS 基础设施。

周一,我根据我的 Terraform Apply 从头开始​​创建了这一切。

星期二(第二天),我想通过一些代码更改来更新我的应用程序(不会影响基础设施的其余部分,只会影响 ECS 中的图像),并在我的 terraform apply 输出中收到此错误消息:

Error: Error modifying DB Instance foo-staging-db: InvalidParameterCombination: Cannot upgrade postgres from 11.8 to 11.4
Run Code Online (Sandbox Code Playgroud)

当我仔细检查我的地形时,database.tf我看到了这个:

resource "aws_db_instance" "main" {
  ...
  engine                  = "postgres"
  engine_version          = "11.4"
  ...
}
Run Code Online (Sandbox Code Playgroud)

有人知道这里会发生什么吗?

  1. 这不是我第一次像这样更新数据库,因为我每个周末都会破坏我的基础设施以限制我的 AWS 成本。
  2. 我通过将 terraform Postgres 版本更改为 11.8 解决了这个问题,但仍然想了解为什么会首先发生错误。

version amazon-web-services amazon-rds terraform

4
推荐指数
1
解决办法
6212
查看次数

Django:防止在表单集中保存空表单

这应该是一个相当容易的,但我真的很难自己弄清楚。

我正在做一个房地产应用程序,我需要我的用户能够上传他们的房屋图片。每个图像都与一个房子相关,每个房子都与一个用户相关。

它的工作方式是,但是如果用户使用我的表单集提交一个空表单,整个事情就会中断,因为它向用户和房屋注册了一个不存在的图像。我怎样才能防止这种情况?

这是我的观点:

def photos_formset(request, *args, **kwargs):
    pk = kwargs['pk']
    ImovelPhotosModelFormset = modelformset_factory(ImovelPhotos, form=ImovelPhotosForm)
    formset = ImovelPhotosModelFormset(
            request.POST or None, request.FILES or None,
            queryset = Imovel.objects.get(pk=pk).imovelphotos_set.all(),
        )
    if formset.is_valid():
        for form in formset:
            if not request.FILES:
                break
            if form.is_valid():
                obj = form.save(commit=False)
                obj.user = request.user
                obj.imovel = Imovel.objects.get(pk=pk)
                obj.save()
        return HttpResponseRedirect('/lares/{pk}/'.format(pk=pk))

    context = {
        "formset": formset,
    }
    return render(request, "imovel_photos.html", context)
Run Code Online (Sandbox Code Playgroud)

看起来更像是潜在答案的事情是这样的,但它不起作用,如果我这样做,什么也不会发生:

if form.is_valid() and not form.empty_permitted:
Run Code Online (Sandbox Code Playgroud)

django django-forms django-views formsets

3
推荐指数
1
解决办法
1833
查看次数

将正则表达式从 bash 翻译成 zsh

我最近将 macOS 更新到了新的 Catalina 版本,并按照建议从 bash 切换到了 zsh。问题是在我的工作流程中我们做了一些需要正则表达式的文件操作,我不知道如何让它与 zsh 一起工作。

这是我的两个正则表达式:

ls | grep ^[0-9].*.chunk.js$
ls | grep ^main.*.chunk.js$
Run Code Online (Sandbox Code Playgroud)

它们应该匹配以下文件:main.d9a85e98.chunk.js2.c2cbac0f.chunk.js

任何想法或资源?

谢谢!

regex bash zsh macos-catalina

1
推荐指数
1
解决办法
2173
查看次数