Django 2 & 3常见技术问题

Django Alan 5年前 (2019-11-12) 5625次浏览 0个评论 扫描二维码

后台篇

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 优化技巧

  1. 外键
    1. 一般在数据库设计层面不希望由于外键导致耦合性过高,在 Django 中可通过对字段定义时添加 db_constraint=False来添加逻辑上的外键,另外 Django 会默认在定义字段名后添加_id后缀,如果发现有类似报错,可指定db_column属性。
    2. 大量使用外键时会发现后台页面速度很慢,这是因为 Django 默认会加载外键中的所有内容,可通过在admin.py 配置中添加autocomplete_fields,并在外键对应表中添加 search_fields进行优化:

常用插件

相关资料

 

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 目录,然后再执行

 

喜欢 (1)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址