新人学习django 是按照这个大佬的教程学习的
链接: https://www.cnblogs.com/derek1184405959/p/8733194.html.

很多步骤都是按照上面的教程学习的,这里只是记录一下自己学习的过程和一些错误
如果有人想要系统的学习,建议去上面那位大佬处学习

1.配置url

from django.urls import path
import xadmin
from django.urls import includeurlpatterns = [path('xadmin/', xadmin.site.urls),path('ueditor/', include('DjangoUeditor.urls')),
]

2.注册app到xadmin后台

from django.contrib import admin# Register your models here.
import xadmin
from xadmin import views
from xadmin.views import BaseAdminView, CommAdminView
from .models import VerifyCode#添加主题
class BaseSetting(object):enable_themes=Trueuse_bootswatch=True#全局配置,后台管理标题和页脚
class GlobalSettings(object):site_title="珂朵莉"site_footer="alotria"#菜单收缩menu_style="accordion"class VerifyCodeAdmin(object):list_display=["code","mobile","add_time"]xadmin.site.register(VerifyCode,VerifyCodeAdmin)
xadmin.site.register(views.BaseAdminView,BaseSetting)
xadmin.site.register(views.CommAdminView,GlobalSettings)
修改app名字为中文
```

from django.apps import AppConfig

class UsersConfig(AppConfig):
name = ‘apps.users’
#后台管理时显示为中文
verbosse_name=“用户管理”

还需要配置__init__.py

default_app_config="users.apps.UsersConfig"

同理分别配置goods,trade和user_operations
goods

from django.contrib import admin
import xadmin
from .models import *
from .models import IndexAd
# Register your models here.
class GoodsAdmin(object):#显示的列list_display=["name","click_num","sold_num","fav_num","goods_num","market_price","shop_price","goods_brief","goods_desc","is_new","is_hot","add_time"]#可以搜索的字段search_fields=["name"]#列表页可以直接编辑list_editable=["is_hot"]#过滤器list_filter=["name","click_num","sold_num","fav_num","goods_num","market_price","shop_price","category","is_new","is_hot","add_time"]#富文本编辑器style_fields={"goods_desc":"ueditor"}#在添加商品的时候可以添加商品图片class GoodsImageInline(object):model=GoodsImageexclude=["add_time"]extra=1style="tan"inlines=[GoodsImageInline]class GoodsCateGoryAdmin(object):list_display=["name","category_type","parent_category","add_time"]list_filter=["category_type","parent_category","name"]search_fields=["name"]class GoodsBrandAdmin(object):list_display=["category","image","name","desc"]def get_context(self):context=super(GoodsBrandAdmin,self).get_context()if "form" in context:context["form"].fields["category"].queryset=GoodsCategory.objects.filter(category_type=1)return contextclass BannerGoodsAdmin(object):list_display=["goods","image","index"]class HostSearchAdmin(object):list_display=["keywords","index","add_time"]class IndexAdmin(object):list_display=["category","goods"]xadmin.site.register(Goods,GoodsAdmin)
xadmin.site.register(GoodsCategory,GoodsCateGoryAdmin)
xadmin.site.register(Banner,BannerGoodsAdmin)
xadmin.site.register(GoodsCategoryBrand,GoodsBrandAdmin)
xadmin.site.register(HostSearchWords,HostSearchAdmin)
xadmin.site.register(IndexAd,IndexAdmin)apps配置from django.apps import AppConfig
class GoodsConfig(AppConfig):name = 'apps.goods'verbose_name="商品管理"__init__.py配置
default_app_config="goods.apps.GoodsConfig"

trade

from django.contrib import admin# Register your models here.
__author__="wtt"import xadmin
from .models import ShoppingCar,OrderInfo,OrderGoodsclass ShoppingCarAdmin(object):list_display=["user","goods","nums"]class OrderInfoAdmin(object):list_display=["user","order_id","trade_on","pay_status","post_script","order_mount","pay_time","add_time"]class OrderGoodsInline(object):model=OrderGoodsexclude=["add_time",]extra=1style="tab"inlines=[OrderGoodsInline,]xadmin.site.register(ShoppingCar,ShoppingCarAdmin)
xadmin.site.register(OrderInfo,OrderInfoAdmin)
from django.apps import AppConfigclass TradeConfig(AppConfig):name = 'apps.trade'verbose_name="交易管理"

default_app_config="trade.apps.TradeConfig"

user_operations

from django.contrib import admin# Register your models here.
__author__="wtt"import xadmin
from .models import *class UserFavAdmin(object):list_diaplay=["user","goods","add_time"]
class UserLeavingMessageAdmin(object):list_display=["user","message_type","message","add_time"]class UserAddressAdmin(object):list_display=["singer_name","singer_mobile","district","address"]xadmin.site.register(UserFav,UserFavAdmin)
xadmin.site.register(UserAddress,UserAddressAdmin)
xadmin.site.register(UserLeavingMessage,UserLeavingMessageAdmin)
from django.apps import AppConfigclass UserOperationConfig(AppConfig):name = 'apps.user_operation'verbose_name="操作管理"
default_app_config="user_operation.apps.UserOperationConfig"

使用python manage.py makemigrations进行数据转移时报错
1.
解决

在这里配置时要注意,最新的版本会在创建app时会将
‘apps.users.apps.UsersConfig’,
这个加进去,就会导致有两个同名的app
将原先的删掉就好了

2.
解决

在settings中缺少这个注册,添加上去就好了

3.
解决

写代码时,将‘.’写成了‘,’ 更改过来就好了

4.
解决
原先用的是username这个字段,但是这个字段在AbstractUser这个抽象类中是存在的,并且不可更改的
将username字段改成name就好了

5.

解决

这里用的应该是mysql,但是在原先的settings字段中配置时,使用的是sqlite3,将sqlite3改成mysql就好了

生成数据库
python manage.py makemigrations
python manage.py migrate
记住在前面的settings的文件中要配置好数据库的用户名和密码
生成成功后通过navicat 查看

然后是导入数据
db_tools下新建文件夹data,然后把前端的json文件(category_data和product_data)拷贝到里面
把brands和goods图片拷贝到media目录下

然后在db_tools下创建import_category_data.py,导入category的数据

#独立使用django的model,将数据导入到数据库中import  sys
import os
#获取当前的文件的路径,运行脚本
pwd=os.path.dirname(os.path.realpath(__file__))
#获取项目的根目录
sys.path.append(pwd+"../")
#要想使用django的model需要指定一个环境变量,会去settings配置找
#可以参照manage.py设置
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'MxShop.settings')import django
django.setup()
#这里要将路径写完整
from apps.goods.models import GoodsCategoryfrom db_tools.data.category_data import row_data
#一级类
for lev1_cat in row_data:#这里处理相当于对json文件的处理lev1_intance=GoodsCategory()lev1_intance.code=lev1_cat["code"]lev1_intance.name=lev1_cat["name"]lev1_intance.category_type=1#保存到数据库lev1_intance.save()#二级类for lev2_cat in lev1_cat["sub_categorys"]:lev2_intance=GoodsCategory()lev2_intance.code=lev2_cat["code"]lev2_intance.name=lev2_cat["name"]lev2_intance.category_type=2lev2_intance.parent_category=lev1_intancelev2_intance.save()#三级类for lev3_cat in lev2_cat["sub_categorys"]:lev3_intance=GoodsCategory()lev3_intance.code=lev3_cat["code"]lev3_intance.name=lev3_cat["name"]lev3_intance.category_type=3lev3_intance.parent_category=lev2_intancelev3_intance.save()

同理创建import_goods_data.py导入goods的数据

import sys
import ospwd=os.path.dirname(os.path.realpath(__file__))
sys.path.append(pwd+"../")
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'MxShop.settings')import django
django.setup()from apps.goods.models import Goods,GoodsCategory,GoodsImagefrom db_tools.data.product_data import row_datafor goods_detail in row_data:goods=Goods()goods.name=goods_detail["name"]#前端中是¥232,数据库中是float类型,所以要替换掉goods.market_price=float(int(goods_detail["market_price"].replace("¥","").replace("元","")))goods.shop_price=float(int(goods_detail["sale_price"].replace("¥","").replace("元","")))goods.goods_brief=goods_detail["desc"] if goods_detail["desc"] is not None else ""goods.goods_desc=goods_detail["goods_desc"] if goods_detail["goods_desc"] is not None else ""#取第一张图片作为封面goods.goods_front_image=goods_detail["images"][0] if goods_detail["images"]  else ""#取最后一个category_name=goods_detail["categorys"][-1]#取出当前子类对应的GoodsCateGory对象,filter没有匹配的会返回空数组,不会抛异常category=GoodsCategory.objects.filter(name=category_name)if category:goods.category=category[0]goods.save()for goods_image in goods_detail["images"]:goods_image_instance=GoodsImage()goods_image_instance.image=goods_imagegoods_image_instance.goods=goodsgoods_image_instance.save()

注意这里的os.environ.setdefault(‘DJANGO_SETTINGS_MODULE’, ‘MxShop.settings’)
这里的配置最好是在manage.py中直接复制
运行后数据成功导入


/xadmin管理后台/
1.创建用户 python manage.py createsuperuser
python manage.py runserver 9000
登录



出现的错误
错误1

style_fields = {"goods_desc":"ueditor"}

中间的:号写成了,

错误2
File “D:\Project\pycharm\PycharmProjects\MxShop\extra_apps\xadmin\plugins\inline.py”, line 203, in instance_form
‘one’ if self.max_num == 1 else self.style)(self, instance)
TypeError: ‘NoneType’ object is not callable
更改xadmin\plugins\inline.py的max_num=None 改成max_num=1

  max_num = 1

错误3
更改goods下的admin的GoodsAdmin的list_filter中的category_name为category

list_filter=["name","click_num","sold_num","fav_num","goods_num","market_price","shop_price","category","is_new","is_hot","add_time"]

错误4
INSTALLED_APPS中要添加
‘crispy_forms’,模块

生鲜超市 学习进阶第三天 xadmin的后台管理相关推荐

  1. Node.js+mongodb 学习笔记(三)swagger注释+用户管理

    Node.js+mongodb 学习笔记(三)swagger注释+用户管理 Node.js+mongodb 学习笔记(三)swagger注释+用户管理 用户注册 用户登录 修改密码 swagger注释 ...

  2. django 进阶第二天 生鲜超市学习 model

    新人学习django 是按照这个大佬的教程学习的 链接: https://www.cnblogs.com/derek1184405959/p/8733194.html. 很多步骤都是按照上面的教程学习 ...

  3. Spring学习进阶 (三) Spring AOP

    一.是什么AOP是Aspect Oriented Programing的简称,最初被译为"面向方面编程":AOP通过横向抽取机制为无法通过纵向继承体系进行抽象的重复性代码提供了解决 ...

  4. php后台幻灯片管理,wordpress进阶教程(三十七):wordpress后台添加幻灯片板块

    本站框架有提供添加幻灯片的步骤,请直接前往本站 框架栏目->幻灯片插件. 网页幻灯片(slider)应用很广泛,很多博客也喜欢在首页弄一个特色文章切换. 不管是文章切换还是图片切换,或者是图文混 ...

  5. django language_Python+Django— 入门通关(三)| admin:后台管理界面

    本节主要告诉大家如何使用Django的后台管理界面. 本节课程代码: https://pan.baidu.com/s/1AfxetY12AjMrILoVml6eCw 提取码:2kle 更多Django ...

  6. ssm生鲜超市管理系统的设计与实现 毕业设计-附源码261635

    SSM生鲜超市管理系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题.针 ...

  7. (附源码)ssm生鲜超市管理系统的设计与实现 毕业设计261635

    S SM生鲜超市管理系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题. ...

  8. 2022-2027年中国生鲜超市行业市场全景评估及发展战略规划报告

    [报告格式]电子版.纸介版 [出品单位]华经产业研究院 本报告由华经产业研究院出品,对中国生鲜超市行业的发展现状.竞争格局及市场供需形势进行了具体分析,并从行业的政策环境.经济环境.社会环境及技术环境 ...

  9. Django REST framework+Vue 打造生鲜超市(三)

    代码下载 github 教程 学习自慕课网-前端vue结合后端DjangoFramework的在线生鲜超市 四.xadmin后台管理 4.1.xadmin添加富文本插件 (1)xadmin/plugi ...

最新文章

  1. 仅需6步,教你轻易撕掉app开发框架的神秘面纱(4):网络模块的封装
  2. ecshop 修改评论功能
  3. hdu4888 最大流(构造矩阵)
  4. TimesTen Warnings and Errors - TT0400 to TT9999 [IDnbsp (
  5. matlab向量的模_基于MATLAB使用矩阵方法求解一维定态薛定谔方程
  6. tomcat闪退没有报错_Appium在Android平台几种常见报错的解决方案
  7. js引擎执行代码的基本流程
  8. 这也能发Nature??年度奇葩论文大赏
  9. 潜伏者(洛谷-P1071)
  10. iPhone和Android的区别,从警示框看iPhone与Android的区别
  11. HBase实践案例:车联网监控系统
  12. 同步异步-阻塞非阻塞
  13. IP冲突,中国移动光猫路由-中兴F673A之修改IP篇
  14. 渗透测试学习笔记(提权)
  15. java机甲类回合制游戏,课内资源 - 基于java的RPG回合制游戏
  16. 2022年中国大学排行榜出炉~
  17. IDEA debug或启动报错:maven-resources-production:XXX:java.lang.NegativeArraySizeException
  18. Glide 加载webp动图实战(解决图片每帧间隔过长,动图单次播放,二次播放动图时首帧是动图最后一帧的问题)
  19. 人民币对美元汇率中间价报6.7560元 上调349个基点
  20. 基于灰度投影法的图片偏移测量

热门文章

  1. signature=7869ee9cbc095e9d3615b893510e566e,Digital Signature Schemes for Secure Video
  2. Vue脚手架创建项目流程
  3. C#中枚举和结构解释(少儿版)
  4. matlab线性回归程序,MATLAB 线性回归
  5. GHOST手动备份系统详细教程(图文)
  6. c#考试,答题系统制作(窗体)
  7. 操作系统面试题(转载)
  8. HTML字母导航栏怎么做,html导航栏下拉菜单怎么制作?这里有详细的代码实例
  9. 关联规则挖掘基本概念与Aprior算法
  10. 常见的数据分析师的面试问题 完整文件放在GitHub链接上了!!!擅用crtl + F