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中import导入上一级目录模块及循环import问题的解决
Jun 04 Python
Python中扩展包的安装方法详解
Jun 14 Python
matplotlib subplots 调整子图间矩的实例
May 25 Python
用Django写天气预报查询网站
Oct 21 Python
python ChainMap的使用和说明详解
Jun 11 Python
python pandas时序处理相关功能详解
Jul 03 Python
Python笔记之facade模式
Nov 20 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
Mar 14 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
May 10 Python
利用python对mysql表做全局模糊搜索并分页实例
Jul 12 Python
python中pop()函数的语法与实例
Dec 01 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 24 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的debug相关函数用法示例
2016/07/11 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
2012/05/24 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
史上最全JavaScript常用的简写技巧(推荐)
2017/08/17 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
vue 组件使用中的一些细节点
2018/04/25 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
解决layui下拉框监听问题(监听不到值的变化)
2019/09/28 Javascript
如何在JavaScript中正确处理变量
2020/12/25 Javascript
深入分析在Python模块顶层运行的代码引起的一个Bug
2014/07/04 Python
利用Python破解斗地主残局详解
2017/06/30 Python
Python3 max()函数基础用法
2019/02/19 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
Django Rest framework权限的详细用法
2019/07/25 Python
使用Python将字符串转换为格式化的日期时间字符串
2019/09/01 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
如何开启linux的ssh服务
2013/06/03 面试题
2013的个人自我评价
2013/12/26 职场文书
中学家长会邀请函
2014/01/17 职场文书
摄影助理岗位职责
2014/02/07 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
2014年生活老师工作总结
2014/12/23 职场文书
如何书写授权委托书?
2019/06/25 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript
python Tkinter模块使用方法详解
2022/04/07 Python
Java实现注册登录跳转
2022/06/16 Java/Android