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 相关文章推荐
Tornado协程在python2.7如何返回值(实现方法)
Jun 22 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 Python
TensorFlow损失函数专题详解
Apr 26 Python
python中使用 xlwt 操作excel的常见方法与问题
Jan 13 Python
关于python之字典的嵌套,递归调用方法
Jan 21 Python
python 使用pandas计算累积求和的方法
Feb 08 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
Jul 01 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
python实现替换word中的关键文字(使用通配符)
Feb 13 Python
用Python在Excel里画出蒙娜丽莎的方法示例
Apr 28 Python
解决导入django_filters不成功问题No module named 'django_filter'
Jul 15 Python
详解Python调用系统命令的六种方法
Jan 28 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
PHP 读取文件的正确方法
2009/04/29 PHP
基于PHP CURL用法的深入分析
2013/06/09 PHP
php 发送带附件邮件示例
2014/01/23 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
div模拟滚动条效果示例代码
2013/10/16 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
基于python二叉树的构造和打印例子
2019/08/09 Python
浅析PEP570新语法: 只接受位置参数
2019/10/15 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
解决HTML5中的audio在手机端和微信端的不能自动播放问题
2019/11/04 HTML / CSS
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
澳大利亚儿童精品仓库:Goo & Co.
2019/06/20 全球购物
Python面试题集
2012/03/08 面试题
就业协议书范本
2014/04/11 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
处级干部考察材料
2014/12/24 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
Vue图片裁剪组件实例代码
2021/07/02 Vue.js