Django创建一个后台的基本步骤记录


Posted in Python onOctober 02, 2020

1.首先分析要做的项目的结构,整理出关系图

2.运行 python manage.py startapp XXX 创建一个app

3.根据关系图设计models层,理清关系,设计好数据结构

4.在settings的位置配置app所在的位置

5.运行python manage.py makemigrations

6.运行 python manage.py migrate

7配置后台 建议运用装饰器如下:

@admin.register(模块类名)
class 模块类名Admin(admin.ModelAdmin):
	配置的代码,比如显示什么 等等

8.运行python manage.py createsuperuser 然后根据提示输入用户名和邮箱等个人信息,其中邮箱可为空,密码在输入的时候不显示在控制台.

10.在定义models字段时经常需要遇到根据请求来源改变用户名的时候,可将方法重写如下:

def save_model(self, request, obj, form, change):
  obj.owner = request.user
  return super(模块类名Admin, self).save_model(request,obj,form,change)

此时的list_display列表 owner 字段 就会根据请求的不同来源自动赋值

11.在定义模块时没有定义的字段如登陆用户可以在后台进行修改如下:

def 字段名称(self, obj):
  return obj.xxx()

 字段名称.short_description = '文本描述'

此时可以在list_display列表里添加 字段名称 这个字段如下:

list_display = [
	'name','sex','age','字段名称'
]

12.在每个models的类都添加__str__方法非常重要如下:

def __str__(self):
	return self.字段名称

13.如果过滤器()不符合自己的需求那么可以自己定制过滤器,基本思想是找到queryset,然后进行一个过滤,主要是继承了admin.SimpleListFilter类,然后对两个属性和两个方法进行重写,如下:

class 类名Filter(admin.SimpleListFilter):
 """自定义过滤器 """
 title = '分类过滤器'
 parameter_name = 'owner_category'

 def lookups(self, request, model_admin):
  return Category.objects.filter(筛选条件).values_list('参数1,必须是主键', '参数2,显示在界面上的内容')

 def queryset(self, request, queryset):
  category_id = self.value()
  if category_id:
   return queryset.filter(category__id=category_id)
  return queryset


@admin.register(类名)
class 类名Admin(admin.ModelAdmin):
 
 list_filter = [类名Filter]

14.若显示界面的内容也就是 list_display的内容不符合预期,我们也可以进行定制.主要原理还是找到queryset在哪里生成也就是数据源的位置进行过滤即可,一般都是get_queryset方法是最后生成queryset的位置.如下:

def get_queryset(self, request):
  qs = super(PostAdmin, self).get_queryset(request)
  return qs.filter(筛选条件)

介于本人学习的进度,编辑页面的配置日后补齐

总结

到此这篇关于Django创建一个后台的基本步骤记录的文章就介绍到这了,更多相关Django创建后台步骤内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用python Django做网页
Nov 04 Python
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
Dec 08 Python
python字符串替换示例
Apr 24 Python
Python中编写ORM框架的入门指引
Apr 29 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
Apr 13 Python
Python编程中归并排序算法的实现步骤详解
May 04 Python
python常用知识梳理(必看篇)
Mar 23 Python
基于Python的文件类型和字符串详解
Dec 21 Python
django2用iframe标签完成网页内嵌播放b站视频功能
Jun 20 Python
pandas计数 value_counts()的使用
Jun 24 Python
简单了解python单例模式的几种写法
Jul 01 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 Python
Python中qutip用法示例详解
Oct 02 #Python
如何利用Python给自己的头像加一个小国旗(小月饼)
Oct 02 #Python
Python通过fnmatch模块实现文件名匹配
Sep 30 #Python
Python tempfile模块生成临时文件和临时目录
Sep 30 #Python
Python实现定时监测网站运行状态的示例代码
Sep 30 #Python
python如何实现word批量转HTML
Sep 30 #Python
Python识别验证码的实现示例
Sep 30 #Python
You might like
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
PHP错误和异长常处理总结
2014/03/06 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
php类的定义与继承用法实例
2015/07/07 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
JS控制表格隔行变色
2006/06/26 Javascript
一个JS翻页效果
2007/07/23 Javascript
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
java中String类型变量的赋值问题介绍
2016/03/23 Javascript
深入理解JS addLoadEvent函数
2016/05/20 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
tensorflow更改变量的值实例
2018/07/30 Python
python日志logging模块使用方法分析
2019/05/23 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
python导入库的具体方法
2020/06/18 Python
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
服装设计专业毕业生推荐信
2013/11/09 职场文书
《童年》教学反思
2014/02/18 职场文书
募捐感谢信
2015/01/22 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
导游词之太湖
2019/10/08 职场文书