小编Pet*_*ott的帖子

Django Queryset上的自然排序

我正在开发一个系统,该系统列出了按产品代码分类的一系列产品。产品代码由两个字母组成,后跟一个数字,例如EG1。

我目前通过简单的方式对这些产品进行分类

Product.objects.order_by('product_code')

但是,由于可以有多个数字的产品代码(例如EG12),因此它们将比单个数字的代码高出一些。即EG1,EG11,EG12,EG13 ... EG19,EG2,EG20等

我知道在产品代码中添加前导零将解决此问题(即EG01而不是EG1),但是由于已经有印刷文献,并且现有站点使用EG1,因此这不是一个选择。

有没有一种方法可以解决此问题,以正确的顺序显示这些产品?

python django natural-sort

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

如何将AWS Glacier永久还原到S3?

我有大约50Gb的文件存储在S3中。昨天,我愚蠢地添加了一个生命周期规则,以将已存在30天以上的文件从S3传输到Glacier,却没有意识到这将禁用到原始文件的公共链接。

实际上,我确实需要这些文件保留在S3中,因为它们是在我们网站上链接的图像和图纸。

我已要求从Glacier恢复文件,但是据我了解,这限制了文件在返回Glacier之前可使用的天数。

我当时想我将不得不创建一个新的存储桶,然后将文件复制到该存储桶,然后将该新存储桶链接到我的网站。

我的问题:

  1. 我想知道是否有一种方法可以不必将文件复制到新存储桶?

  2. 如果我只是在S3中返回文件后更改文件的存储类,这会阻止它返回Glacier吗?

  3. 如果我必须将文件复制到新的存储桶中,则假定这些副本不会随机返回Glacier?

我是S3的新手(您可能会因我的骨头错误而知道),所以请尝试保持温柔

amazon-s3 amazon-web-services amazon-glacier

5
推荐指数
2
解决办法
860
查看次数

在 Heroku 审核应用程序中指定 Postgres 数据库计划

我正在尝试使用 Heroku 审核应用程序来测试并向我的同事展示我的网站。该站点有一个大型数据库,无法与 Heroku 的免费hobby-dev数据库一起使用。

我正在尝试按照指南使用app.json清单文件来指定我的应用程序的平台。我正在使用的代码如下:

应用程序.json

  {
    "name": "SiteName",
    "description": "The website for SiteName",
    "keywords": [
      "mezzanine",
      "django"
    ],
    "image": "heroku/python",
    "env": {
      "EMAIL_SYSTEM": {
        "description": "The email system to use, either console or mailgun",
        "value": "mailgun"
      },
      "ENVIRONMENT": {
        "description": "The dev environment, either production or test",
        "value": "production"
      },
      "ALLOWED_HOSTS": {
        "description": "Comma-separated list of hosts",
        "value": ".herokuapp.com"
      },
      "DEFAULT_FROM_EMAIL": "noreply@example.com",
      "SECRET_KEY": {
        "description": "A secret key for verifying the integrity of …
Run Code Online (Sandbox Code Playgroud)

heroku heroku-postgres heroku-review-app

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

移动文件而不在 django-storages 和 S3 中打开

我使用 django 与 django-storages 和 S3 来管理一些上传的文件。这些文件可以上传到“feature”文件夹中,例如:

/uploads/products/ 产品代码/功能/文件名.pdf

我想将文件移出此功能文件夹,删除原始文件(最终删除所有文件后的包含文件夹),以便可以在以下位置找到它们:

/上传/产品/产品代码/文件名.pdf

我目前有以下代码来执行此操作:

def move_files_in_folders(path, folder):
    files = default_storage.listdir(path+"/"+folder)
    returnable_file_list = list()

    for filename in files[1]:
        if filename is not '':

            movable_file = default_storage.open(path+'/'+folder+'/'+filename)
            default_storage.save(path+'/'+filename, movable_file)
            default_storage.delete(path+'/'+folder+'/'+filename)
            returnable_file_list.append(filename)

    default_storage.delete(path + '/' + folder)
    return returnable_file_list
Run Code Online (Sandbox Code Playgroud)

这可行,但对于长文件列表来说非常慢,因为系统必须打开每个文件并重新保存它。

有没有办法重构此代码以避免昂贵的打开和保存调用?

python django amazon-s3

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

如何使用 Nuxt ServerMiddleware 和 Apollo GraphQL 处理 301 重定向

我目前正在构建一个 Vue / Nuxt 应用程序,并结合修改后的 Saleor 安装来在线销售产品。

当我们从现有系统迁移时,我们需要能够处理从旧网站 URL 到新网站 URL 的 301 重定向。

我修改了 API 以响应以下 GraphQL 查询。

export const CHECK_REDIRECTS_QUERY = gql`
  query Redirect($oldPath: String) {
    redirect(oldPath: $oldPath) {
      oldPath
      newPath
    }
  }
`
Run Code Online (Sandbox Code Playgroud)

根据此建议,我在 ~/serverMiddleware/redirect.js 文件中创建了以下代码

import { CHECK_REDIRECTS_QUERY } from '~/graphql/navigation/queries'

export default function(req, res, next) {
  console.log('redirects middleware')
  // context.userAgent = process.server ? context.req.headers['user-agent'] : navigator.userAgent
  this.$apollo
    .query({
      query: CHECK_REDIRECTS_QUERY,
      variables: {
        oldPath: '/test/11/old/'
      }
    })
    .then(({ data }) => {
      if (data.redirect.newUrl …
Run Code Online (Sandbox Code Playgroud)

http-status-code-301 apollo graphql nuxt.js vue-apollo

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