簡體   English   中英

如何為 flake8 格式化 Django 設置文件

[英]How to format Django setting file for flake8

我有點痴迷於用 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',太長了。 有沒有辦法格式化這個還是我應該忽略這個?

如果您痴迷於沒有收到比代碼的實際外觀更多的警告,那么您可以通過在斷點處添加\\字符來中斷一行 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!!!"    

注意:當您要拆分的行位於{}, [] or ()內時, \\字符會引發錯誤,因此您可以簡單地執行以下操作:

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

考慮到這並不是那么丑陋......


如果你不想要警告並且你喜歡你的代碼,那么你可以添加:

# nopep8 

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

作為替代方案(以下重寫通過 PEP8):

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

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

正在看編碼風格| Django 文檔並發現了這個:

PEP 8 的一個例外是我們關於行長的規則。 不要將代碼行限制為 79 個字符,如果這意味着代碼看起來更難看或更難閱讀。 我們最多允許 119 個字符,因為這是 GitHub 代碼審查的寬度。

甚至 Django 的人也避免使用它(他們也更喜歡 flake8 進行 PEP8 檢查)。 所以,如果你制作一個.flake8setup.cfg文件並輸入:

[flake8]
max-line-length = 119

如果您使用的是 VS 代碼....

1)在您的項目中創建文件夾( .vscode )。

2)在文件夾( .vscode )中創建settings.json文件並粘貼此代碼

{
    "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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM