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常用正则表达式符号浅析
Aug 13 Python
Windows下为Python安装Matplotlib模块
Nov 06 Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 Python
Django实战之用户认证(用户登录与注销)
Jul 16 Python
在Python中调用Ping命令,批量IP的方法
Jan 26 Python
django页面跳转问题及注意事项
Jul 18 Python
如何使用python操作vmware
Jul 27 Python
python实现网站用户名密码自动登录功能
Aug 09 Python
python Web flask 视图内容和模板实现代码
Aug 23 Python
python中dict()的高级用法实现
Nov 13 Python
如何基于python实现不邻接植花
May 01 Python
使用python实现下载我们想听的歌曲,速度超快
Jul 09 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中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
2013/05/15 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
PHP 裁剪图片
2021/03/09 PHP
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
快速入门Vue
2016/12/19 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
Three.JS实现三维场景
2018/12/30 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
详解JavaScript数据类型和判断方法
2020/09/04 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python中的代码编码格式转换问题
2015/06/10 Python
Python入门必须知道的11个知识点
2018/03/21 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
如何在 Django 模板中输出 "{{"
2020/01/24 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
金宝贝童装官网:Gymboree
2016/08/31 全球购物
领导班子四风问题对照检查材料
2014/09/27 职场文书
幼师自荐信范文
2015/03/06 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
让生命充满爱观后感
2015/06/08 职场文书
告知书格式
2015/07/01 职场文书
Python绘画好看的星空图
2022/03/17 Python