后台篇
1、如果在 admin 中取消注册默认的应用(模型)?
比如在安装了 Django APScheduler 执行定时任务时,它默认会注册两个模型并出现在 admin 页面中,此时可通过在应用的 admin.py 文件中使用如下代码在后台中隐藏掉这部分的显示:
2、如何在后台的表单中禁止某些字段的编辑?
这个操作比较简单,只需在admin.py的XxxAdmin中添加:
常用的还有list_display,list_filter,search_fields,inlines等,使用行内编辑时需填写类似Xxx_Inline的值,定义可参考:
3、如何对后台表单中的字段进行分组?
同样在 admin.py 中进行配置,参照如下:
4、如何在后台列表页面将链接显示为可点击文本?
后台列表页的字段通过list_display进行指定,以主页为例,我们可以在 models.py 中定义一个home_link方法并将其添加到list_display中:
5、The number of GET/POST parameters exceeded settings.DATA_UPLOAD_MAX_NUMBER_FIELDS
这个原因是DATA_UPLOAD_MAX_NUMBER_FIELDS的默认值为1000,若超过即会报错,可在 settings.py 中进行配置,如10240:
6、如何使用 Django 维护一个已有数据库的项目呢?
7、如何生成多语言文件?
国际化注意有一个坑,就是字母的大小写,在 Ubuntu 等系统会需要首字母大写,所以不要使用zh_hans
8、生成配置文件中的 secret
9、如何防止敏感信息记入日志:
Django 优化技巧
- 外键
- 一般在数据库设计层面不希望由于外键导致耦合性过高,在 Django 中可通过对字段定义时添加
db_constraint=False
来添加逻辑上的外键,另外 Django 会默认在定义字段名后添加_id
后缀,如果发现有类似报错,可指定db_column
属性。 - 大量使用外键时会发现后台页面速度很慢,这是因为 Django 默认会加载外键中的所有内容,可通过在admin.py 配置中添加
autocomplete_fields
,并在外键对应表中添加search_fields
进行优化:
- 一般在数据库设计层面不希望由于外键导致耦合性过高,在 Django 中可通过对字段定义时添加
常用插件
- Django Debug Toolbar:查看 debug信息
- Django Silk:性能瓶颈分析
- Django Simple UI:基于Vue Element UI 的后台主题
- Django Haystack:模块化搜索方案
- Django Notifications:消息通知
- Django Markdown Editor:Markdown 编辑器
- Django Crispy Forms:表单
- Django Simple Captcha:Captcha 验证码
- django-ratelimit:限流
- django-prometheus
- Cryptography:数据加密
- django-user-accounts
- django-docker-alpine
- uvicorn-gunicorn-docker
相关资料
DRF篇
1、’AutoSchema’ object has no attribute ‘get_link’
配置文件中添加
配置篇
1、smtplib.SMTPSenderRefused: (501, b’mail from address must be same as authorization user’, ‘webmaster@localhost’)
添加如下配置:
2、relation “django_site” does not exist
3、CommandError: Unable to find a locale path to store translations for file xxxx/__init__.py
在项目根目录下创建 locale 目录,然后再执行