每种编程语言或框架都有自己的编码规范, 基于Python语言的Django框架也不例外。如果有一天你有幸找到了一份Django开发工作或者有一天你牛了,开发了自己的开源软件,展示你成果的最好方式就是一份优雅整洁符合编码规范的代码。今天小编我就带你来看下官方推荐的Django开发编码规范,先收藏再阅读吧!
Python编码规范
Django是Python语言写成的框架,所以其代码也要求符合Python的PEP8编码规范,比如永远使用4个空格做缩进,函数名用小写,类名首字母要大写。你可以使用Flake8 来辅助检测你的Python代码是否规范,使用pip安装即可。另外很多IDE比如PyCharm已自带代码检查工具,使用时还推荐使用.editorconfig文件来配置你的编码规范,比如html中使用2个空格做缩进。
值得一提的PEP8规范里每行代码字符数要求不超过79个,而Django允许每行最多119个字符, 这是GitHub代码审查时可以接受的每行代码的最大长度。
如果你有一行代码非常长,建议使用如下方式换行。括号单独成行,依然使用4个空格为每行内容做缩进:
-
raise AttributeError(
-
'Here is a multiline error message '
-
'shortened for clarity.'
-
)
而不是采用如下垂直对齐的方式(这是很多新手易范的错误):
-
raise AttributeError(
'Here is a multiline error message '
-
'shortened for clarity.')
第一种方式更好的原因是,当你需要改变某行文字内容时,不需要再进行手动对齐了。
另外Django对字符串推荐使用单引号,只有当字符串本身里包含单引号时才使用双引号。对于三引号docstring注释,Django推荐3个双引号,如下所示:
-
def test_foo():
-
"""
-
A test docstring looks like this (#123456).
-
"""
导包(import)
导包时要注意区分哪些是来未来的,哪些是python的标准库,哪些是第三方包,哪些是Django自带的标准包以及开发者自己编写的包。对于Django自带的包使用绝对路径,对于开发者自己编写的包, 使用相对路径。
另外你还需要注意最后一行导包(import)与你自己代码之间的空格距离,与一般模块代码空格一行即可,但与你的第一个函数或类必需空格两行。
示范代码如下所示:
-
# future
-
from __future__
import unicode_literals
-
-
-
# standard library
-
import json
-
from itertools
import chain
-
-
-
# third-party
-
import bcrypt
-
-
-
# Django
-
from django.http
import Http404
-
from django.http.response
import (
-
Http404, HttpResponse, HttpResponseNotAllowed, StreamingHttpResponse,
-
cookie,
-
)
-
-
-
# local Django
-
from .models
import LogEntry
-
-
-
# try/except
-
try:
-
import yaml
-
except ImportError:
-
yaml =
None
-
-
-
CONSTANT =
'foo'
-
-
-
-
-
class Example:
-
# ...
你还可以使用isort帮你实现自动化导包顺序,使用如下命令即可:
-
$
python -m pip install isort >= 5.1.0
-
$
isort -rc .
模板样式
对于模板中的变量,遵循以下规范:
-
# Good
-
{{
foo }}
-
-
-
# Bad
-
{{
foo}}
视图样式
对于函数视图,第一个参数永远是request, 不要擅自修改。
-
# Right
-
def my_view(request, foo):
-
# ...
-
-
-
# Wrong
-
def my_view(req, foo):
-
# ...
模型样式
模型的字段应该是小写字母,可以使用下划线连接,不要使用驼峰命名。
-
# Good
-
class Person(models.Model):
-
first_name = models.CharField(max_length=
20)
-
last_name = models.CharField(max_length=
40)
-
-
-
# Bad
-
class Person(models.Model):
-
FirstName = models.CharField(max_length=
20)
-
Last_Name = models.CharField(max_length=
40)
模型的Meta选项应该在自定义模型字段最后,且与最后一条字段间有一空行。
-
class Person(models.Model):
-
first_name = models.CharField(max_length=
20)
-
last_name = models.CharField(max_length=
40)
-
-
-
class Meta:
-
verbose_name_plural =
'people'
有时你需要给模型定义__str__方法,重写save方法或自定义其它方法,这些方法应该放在Meta选项后面,且遵循下面的顺序:
定义的模型字段
定制的Manager方法
class Meta选项
def __str__()
def save()
def get_absolute_url()
其它自定义方法
其它
国际化时按规范标记所有需要翻译的字符串。
没有用到的包或import需要移除。
系统性移除代码里多余的空格等等。
Django推荐的编码规范你学到了吗? 当然最核心还是Python的PEP8编码规范,推荐大家百度一下看一看。
大江狗
2020.11.12
推荐阅读
转载:https://blog.csdn.net/weixin_42134789/article/details/109664613