IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django(二)精美博客搭建(7)文章应用及后台管理系统xadmin搭建 -> 正文阅读

[Python知识库]Django(二)精美博客搭建(7)文章应用及后台管理系统xadmin搭建

前言

本章主要讲述【文章应用】及【后台管理系统xadmin】的搭建

大家其实也可以用原来的admin,我这里会详细介绍一下xadmin的搭建,大家可以看做是知识补充

主要知识点:

  • xadmin的搭建及问题解决

环境:

  • Pycharm
  • python3.6
  • mysql 5.7
  • django 2.0.13


一、Article应用搭建

  • 之前在blog中有提过,我们一般项目中的不同模块分别区分为不同的应用,而每个应用呢,我们都需要去进行相关配置,搭建思路和之前user应用的搭建是一样的

1、新建article应用

  • 首先新建一个article应用
python manage.py startapp article

在这里插入图片描述


2、settings.py

  • 自己新创建的每个应用都要进行配置哈

在这里插入图片描述


3、urls.py

# 配置article路径
path('article/', include(('article.urls', 'article'), namespace='article')),

在这里插入图片描述


4、在article应用下新建urls.py

  • 该文件里则配置与article相关的路由
"""
    与文章相关的路由配置在这儿
"""
app_name = 'article'

urlpatterns = [

]

在这里插入图片描述


5、article应用修改models.py

  • 设计好article相关的表及表关联:
    【文章和标签】:多对多关系
    【用户和文章】:一对多关系

在这里插入图片描述

from django.db import models

# Create your models here.

# 思考好一篇文章详情内的元素,然后建表
# 例如:标题、描述、内容、标签、发表日期、图片、作者、点赞数、点击量
from user.models import UserProfile


class Tag(models.Model):
    """
        标签表
    """
    name = models.CharField(max_length=50, verbose_name='标签名称')

    def __str__(self):
        return self.name

    # 嵌套类,主要目的是给上级类添加一些功能,或者指定一些标准.
    class Meta:
        db_table = 'tag'  # 数据库表名
        verbose_name = '标签表'  # 单复数名称
        verbose_name_plural = verbose_name


class Article(models.Model):
    """
        文章表
    """
    title = models.CharField(max_length=100, verbose_name="标题")
    description = models.CharField(max_length=300, verbose_name="简介")
    content = models.TextField(verbose_name="内容")
    date = models.DateField(auto_now=True, verbose_name="发表日期")
    click_num = models.IntegerField(default=0, verbose_name="点击量")
    love_num = models.IntegerField(default=0, verbose_name="点赞量")
    image = models.ImageField(upload_to='uploads/article/%Y/%m/%d', verbose_name="文章图片")

    tags = models.ManyToManyField(to=Tag, verbose_name="标签")  # 标签和文章是多对多关系
    # on_delete=models.CASCADE :级联删除:当删除主表的数据的时候从表中的数据也随着一起删除。
    user = models.ForeignKey(to=UserProfile, on_delete=models.CASCADE, verbose_name="用户")  # 用户和文章是一对多关系

    def __str__(self):
        return self.title

    # 嵌套类,主要目的是给上级类添加一些功能,或者指定一些标准.
    class Meta:
        db_table = 'article'  # 数据库表名
        verbose_name = '文章表'  # 单复数名称
        verbose_name_plural = verbose_name

6、article下新增adminx.py

  • 我们这里新增adminx.py,是为了将表注册到xadmin后台上

在这里插入图片描述
设计好后记得同步更新

python manage.py makemigrations
python manage.py migrate

在这里插入图片描述



二、Xadmin简要介绍

1、文档介绍

  • 由于原始admin的样式过于简洁,所以我们这边后台系统使用Xadmin插件,他本身是基于前端框架LayUI所写的一套后台管理系统
  • 关于具体的安装及使用可参考:
    Xadmin说明文档:https://xadmin.readthedocs.io/en/docs-chinese/
  • 注意:文档里面提供了两种安装方法,大家随便选一种就行,我这里的话就选择源码下载

在这里插入图片描述


2、插件下载

2.1、下载源码

在这里插入图片描述


2.2、统一安装插件

  • 文件解压后,我们可以看到有requirements.txt,里面定义了一些插件,我们直接下载所有的插件
pip install -r requirements.txt

在这里插入图片描述

在这里插入图片描述


3、把xadmin迁移到项目里

  • 将整个xadmin文件夹迁移到项目下
  • 注意: 由于我们前期框架就这么一个一个搭建完了,正常项目下搭建的话我们应该更改一下我们目录结构,如第二张图所示:我这里就不改了,如果你们要改的话记得要把对应的配置都改下哈,否则项目可能启动报错

在这里插入图片描述

在这里插入图片描述



三、xadmin应用配置

1、settings.py

# xadmin,注意用xadmin的话,以下两个都要配置
'xadmin',
'crispy_forms'

在这里插入图片描述


2、urls.py

# path('admin/', admin.site.urls),
# 配置xadmin路径
path('xadmin/', xadmin.site.urls),

在这里插入图片描述


3、创建admin超级用户

# 用于后台登陆账号
python manage.py createsuperuser

在这里插入图片描述


4、更新数据库

python manage.py makemigrations
python manage.py migrate

在这里插入图片描述



四、xadmin展示效果

  • 如果成功启动项目了的话,xadmin展示效果如下
    如果,启动项目中出现各种报错,详细请看 【标题五问题集】

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



五、搭建xadmin问题集

1、django2问题

  • PS:启动xadmin时报各种错,我本来是一个一个去调通,结果错误实在是太多了,因为正常情况下只有兼容问题才会导致这么多错误;所以调到一半,巨坑的发现到我本地的Django不知道什么时候被自动升级到了django3,然后直接把django版本降回django2.0.13

1.1、先降级回django2.0.13

pip install django==2.0.13

在这里插入图片描述

1.2、启动报错

  • 问题:导包错误
ImportError: cannot import name ‘DEFAULT_FORMATS‘ from ‘import_export.admin‘
  • 解决方案:
# 注释掉报错的这行
#from import_export.admin import DEFAULT_FORMATS, SKIP_ADMIN_LOG, TMP_STORAGE_CLASS

# 改成下面这两行
from import_export.formats.base_formats import DEFAULT_FORMATS
from import_export.admin import ImportMixin, ImportExportMixinBase

在这里插入图片描述


2、django3问题集

2.1、xadmin–>sites.py导入six包报错

在这里插入图片描述

  • 解决方法:
改为 import six

在这里插入图片描述


2.2、django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required; you have 0.9.3.

  • 问题原因:兼容问题,MySQLclient 目前只支持到 Python3.4,而我们项目版本为Python3.6

在这里插入图片描述
解决:

import pymysql
pymysql.version_info = (1, 4, 13, "final", 0)
pymysql.install_as_MySQLdb()  # 使用pymysql代替mysqldb连接数据库

在这里插入图片描述


2.3、ImportError: cannot import name ‘python_2_unicode_compatible’

在这里插入图片描述

在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-18 23:23:49  更:2022-06-18 23:24:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 4:22:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计