https://www.jianshu.com/p/9b3bfe934511

https://www.cnblogs.com/1Q84mi/p/xadmin002.html

https://blog.csdn.net/killersdz/article/details/89018834

https://www.cnblogs.com/aaronthon/p/9183442.html

这是因为你在编写userprofile之后才运行的migrate, 
应该在编写userprofile之前运行migratge才会生成auth_user表,
如果你直接写了userprofile的model然后运行migrate,
就会直接不生成auth_user,
你根据课程的节奏来就不会这样了,
不要随意跳过章节

settings.py

from apps import users  #users是我建立的一个app
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
sys.path.insert(1, os.path.join(BASE_DIR, 'extra_apps')) INSTALLED_APPS = [
'xadmin',
'crispy_forms',
'users',
] #扩展usermodel
AUTH_USER_MODEL = 'users.UserProfile' #mysql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'jpdata', # 数据库
'USER': 'root', # 用户名
'PASSWORD': '', # 密码
'HOST': '127.0.0.1',
}
} #中文
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False #不知道
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

urls.py

 path('xadmin/', xadmin.site.urls),

adminx.py

# 样式开启和头脚设定

class BaseSetting(object):
enable_themes = True
use_bootswatch = True xadmin.site.register(views.BaseAdminView, BaseSetting)

----------------------------------------------------------------------

apps设定

1.创建一个users的app

models.py

from django.db import models
from django.contrib.auth.models import AbstractUser class UserProfile(AbstractUser):
jifen = models.fields.IntegerField(verbose_name=u"积分", default=0)
# birday = models.DateField(verbose_name=u"生日", null=True, blank=True)
# gender = models.CharField(max_length=8, choices=(("male", u"男"), ("female", u"女")), default="female")
# address = models.CharField(max_length=100, default=u"")
# mobile = models.CharField(max_length=11, null=True, blank=True)
# image = models.ImageField(upload_to="image/%Y/%m", default=u"image/default.png", max_length=100) class Meta:
verbose_name = "用户信息"
verbose_name_plural = verbose_name def __str__(self):
return self.username

adminx.py[新建]

import xadmin
from .models import UserProfile class UserProfileAdmin(object):
# def save_model
list_display = ['username', 'first_name', 'last_name', 'email', 'is_staff', 'is_active', 'date_joined',
'last_login',
'jifen']
list_filter = ['username']
# data_charts= 'drivers-license-o'
search_fields = ['id', 'username']
# model_icon = 'fa fa-user-o'
list_editable = ['jifen'] # 先注销模块,再注册
xadmin.site.unregister(UserProfile)
xadmin.site.register(UserProfile, UserProfileAdmin) # 设计左侧菜单
class GlobalSetting(object): #名称不能改
def get_site_menu(self): #名称不能改
return [
{
'title': '测试的',
'icon': 'fa fa-bar-chart-o',
'menus': (
{
'title': '测试子菜单1', #这里是你菜单的名称
'url': '/xadmin/test_view', #这里填写你将要跳转url
'icon': 'fa fa-cny' #这里是bootstrap的icon类名,要换icon只要登录bootstrap官网找到icon的对应类名换上即可
},
{
'title': '测试子菜单2',
'url': 'http://www.taobao.com',
'icon': 'fa fa-cny'
}
)
}
] site_title = "后台管理系统"
site_footer = "管理系统@admin"
menu_style = "accordion" #注册你上面填写的url
from .views import TestView #从你的app的view里引入你将要写的view,你也可以另外写一个py文件,把后台的view集中在一起方便管理
xadmin.site.register_view(r'test_view/$', TestView, name='for_test') #注册GlobalSetting
from xadmin.views import CommAdminView
xadmin.site.register(CommAdminView, GlobalSetting)

apps.py

# -*- coding: utf-8 -*-
from django.apps import AppConfig class UsersConfig(AppConfig):
name = 'users'
verbose_name = u'用户管理'

__init__.py

default_app_config = "users.apps.UsersConfig"

views.py

from django.shortcuts import render

# Create your views here.
from xadmin.views import CommAdminView class TestView(CommAdminView):
def get(self, request):
context = super().get_context() # 这一步是关键,必须super一下继承CommAdminView里面的context,不然侧栏没有对应数据,我在这里卡了好久
title = "测试子菜单123" # 定义面包屑变量
context["breadcrumbs"].append({'url': '/cwyadmin/', 'title': title}) # 把面包屑变量添加到context里面
context["title"] = title # 把面包屑变量添加到context里面 # 下面你可以接着写你自己的东西了,写完记得添加到context里面就可以了
#.........
return render(request, 'users/../../templates/users/test.html', context) # 最后指定自定义的template模板,并返回context

大体结构

django版本2.2.1

 ordering = ['-click_nums']  # 进入xadmin页面将某个字段倒序排列
readonly_fields = ['click_nums'] # 将某个字段以只读形式
exclude = ['fav_nums'] # 不显示某个字段

django实战总结2的更多相关文章

  1. 从零开始部署Django生产环境(适用:《跟老齐学Python Django实战》)

    <跟老齐学Python Django实战>作为市面上少有的Django通俗实战书籍,给了我学习Django很大的帮助.作为一名新入门的菜鸟,全书我重复练习了至少三遍,每次都有新的收获. 前 ...

  2. django 实战 - eLeave Form

    需求: 实现请假单的电子审批 1. 支持国际化 2. 支持模型级别的访问记录 here we go: 这里会写一系列的文章,来记录我实战的过程,由于接触django没多久,难免有疏漏之处,望拍砖不要太 ...

  3. Django实战(一)-----用户登录与注册系统6(session会话、注册视图)

    因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的. 通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于 ...

  4. Django实战(一)-----用户登录与注册系统3(前端页面、登录视图)

    基本框架搭建好了后,我们就要开始丰富页面内容了.最起码,得有一个用户登录的表单不是么?(注册的事情我们先放一边.) 一. 原生HTML页面 删除原来的login.html文件中的内容,写入下面的代码: ...

  5. Django实战(二)之模板语言

    该实战教程基于菜鸟教程,菜鸟教程可参考:http://www.runoob.com/django/django-template.html 模板语法,每个框架都有其支持的模板语法,Django的模板语 ...

  6. 5、Django实战第5天:首页和登录页面的配置

    从这天开始我们需要用到前端源码,需要的朋友可以进行小额打赏(15元),打赏二维码在博客的右侧,打赏后可以凭截图联系463951510@qq.com,博主收到邮件后会立即回复发送所有源码素材,实战过程中 ...

  7. python框架Django实战商城项目之工程搭建

    项目说明 该电商项目类似于京东商城,主要模块有验证.用户.第三方登录.首页广告.商品.购物车.订单.支付以及后台管理系统. 项目开发模式采用前后端不分离的模式,为了提高搜索引擎排名,页面整体刷新采用j ...

  8. python框架Django实战商城项目之用户模块创建

    创建用户APP 整个项目会存在多个应用,需要存放在一个单独的文件包了,所以新建一个apps目录,管理所有子应用. 在apps包目录下穿件users应用 python ../../manage.py s ...

  9. django实战商城项目注册业务实现

    设计到的前端知识 项目的前端页面使用vue来实现局部刷新,通过数据的双向绑定实现与用户的交互,下面来看一下需求,在用户输入内容后,前端需要做一些简单的规则校验,我们希望在在用户输入后能够实时检测,如果 ...

  10. Django 实战 之 搭项目(正在更新)

    系统:win10 python版本:python 3.5 工具: pyCharm 3.4 professional 源码来源:https://github.com/ouzhigang/django-o ...

随机推荐

  1. 51nod 2499 不降的数字

    小b有一个非负整数 N,她想请你找出 ≤N≤N 的最大整数x,满足x各个位数上的数字是不降的.也就是说,设x的十进制表示为 a1,a2,…,ama1,a2,…,am,则对于任意 1≤i<m1≤i ...

  2. Run Multiple Webpack Configs Sequentially

    https://www.viget.com/articles/run-multiple-webpack-configs-sequentially/ const path = require('path ...

  3. php进行判断PC还是手机端代码

    之前网站判断移动还是手机跳转都是用js实现,今天给大家分享一个自己用的php判断移动或者PC <?php function check_wap() { if (isset($_SERVER['H ...

  4. test20190731 夏令营NOIP训练16

    0+90+0=90.我只挑了T2做. 连接格点 有一个M行N列的点阵,相邻两点可以相连.一条纵向的连线花费一个单位,一条横向的连线花费两个单位.某些点之间已经有连线了,试问至少还需要花费多少个单位才能 ...

  5. zjoj1706: [usaco2007 Nov]relays 奶牛接力跑

    矩阵乘法(快速幂) 为说明方便,这里让\(k\)为点数,\(n\)为路径长度. 先将点都离散化,这样最后的点只有\(2k\)个. 先考虑一种暴力,每次用\(O(k^3)\)的复杂度来暴力更新,设当前长 ...

  6. netty: 编解码之jboss marshalling, 用marshalling进行对象传输

    jboss marshalling是jboss内部的一个序列化框架,速度也十分快,这里netty也提供了支持,使用十分方便. TCP在网络通讯的时候,通常在解决TCP粘包.拆包问题的时候,一般会用以下 ...

  7. Error Codes Messages查找工具介绍

    当我们通过各种手段获取到一个Windows错误码后,如何获取对应的错误消息呢?有两种方法:一是用编程的手段(FormatMessage):其二是用现成的工具.第一种方法一般在我们编码的时候有用,而更多 ...

  8. HTML5新增常用标签

    1.header 标签定义文档的页眉(介绍信息). <body> <article> <header> <h1>What Does WWF Do?< ...

  9. SpreadJS 复制行

    参考:https://www.cnblogs.com/yeyuqian/p/10750441.html 核心代码: //例子:复制第一行(10列) 复制到 第二行var fromRanges = ne ...

  10. fgets()函数

    声明: char *fgets(char *str,int n,FILE* stream) 参数: str—这是指向一个字符数组的指针,该数组存储了要读取的字符串 n – 这是要读取的最大字符数(包括 ...