7

我有点痴迷于用 flake8 格式化我的 python 代码。但是,我在 Django 的设置文件中找不到解决 E501(行太长 x > 79 个字符)的好方法。

首先是这样的(4xE501):

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

然后我想出了这个:

AUTH_PASSWORD_VALIDATORS = [{
    'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    }, {
    'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    }, {
    'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    }, {
    'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

但是还是'NAME':django.contrib.auth.password_validation.UserAttributeSimilarityValidator',太长了。有没有办法格式化这个或者我应该忽略这个?

4

4 回答 4

5

如果您沉迷于没有收到此警告而不是代码的实际外观,那么您可以通过\在断点处添加一个字符来中断一行 python 代码(而不破坏它的连续性):

例子:

# 1
from some_module import some_method, some_other_method, \
                        a_third_method

# 2
s = "A really very long string, which exist to mesh with your pep8" \
    " warning free obsession. Well, not anymore!!!"    

注意:\你要分割的行在 inside 时,字符会引发错误{}, [] or (),所以你可以简单地这样做:

AUTH_PASSWORD_VALIDATORS = [{
    'NAME': 'django.contrib.auth.password_validation.'
            'UserAttributeSimilarityValidator'
    }, ...

考虑到这并不是那么丑陋...


如果您不想要警告并且您喜欢您的代码,那么您可以添加:

# nopep8 

在您希望免除 pep8 分析的每一行的末尾。

于 2017-04-25T10:19:11.317 回答
3

作为替代方案(以下重写通过 PEP8):

[{"NAME": f"django.contrib.auth.password_validation.{name}"}
 for name in [
    "UserAttributeSimilarityValidator",
    "MinimumLengthValidator",
    "CommonPasswordValidator",
    "NumericPasswordValidator"]]

在 python 2 中,您可以使用{}".format(name)而不是f"".

于 2017-05-10T04:54:06.157 回答
2

正在看编码风格 | Django 文档并发现了这个:

PEP 8 的一个例外是我们关于行长的规则。不要将代码行数限制为 79 个字符,如果这意味着代码看起来更难看或更难阅读。我们最多允许 119 个字符,因为这是 GitHub 代码审查的宽度。

甚至 Django 的人也避免使用它(他们也更喜欢 flake8 进行 PEP8 检查)。所以,如果你创建一个.flake8orsetup.cfg文件并输入:

[flake8]
max-line-length = 119
于 2017-08-08T17:24:12.317 回答
0

如果您使用的是 VS Code....

.vscode1)在您的项目中创建文件夹 ( )。

2)settings.json在文件夹 ( .vscode) 中创建文件并粘贴此代码

{
    "team.showWelcomeMessage": false,
    "editor.formatOnSave": true,
    "python.linting.pycodestyleEnabled": false,
    "python.linting.pylintPath": "C:Users/User/AppData/Roaming/Python/Python37/site-packages/pylint",
    "python.linting.pylintArgs": [
        "--load-plugins",
        "pylint_django"
    ],
    "python.linting.pylintEnabled": false,
    "python.linting.enabled": true
}

where "python.linting.pycodestyleEnabled": false, (do FALSE)

于 2020-04-28T20:17:30.977 回答