django建站过程(3)定义模型与管理页

本文介绍了如何在Django中定义模型,进行数据库迁移,注册模型到管理页面,修改后台管理的名称和列表,添加查询功能,以及使用djangoshell进行数据操作和认证授权的基本设置。

定义模型[models.py]

模仿博客形式,模块暂定义【(标题、作者、时间、正文),(主题类型)】

from django.db import models

# Create your models here.
class topic(models.Model):
    '''定义文稿的主题类型'''
    text=models.CharField(max_length=200)
    date_added=models.DateTimeField(auto_now_add=True)
    
    class Meta:
        verbose_name='主题类型'		#数据库表的名称显示
        verbose_name_plural='主题集合'		#数据库表的名称集显示

    def __str__(self):
        return self.text

class  documentes(models.Model):
    '''定义文档的结构'''
    topic=models.ForeignKey(topic,on_delete=models.CASCADE)
    title=models.CharField(max_length=30)
    date_added=models.DateTimeField(auto_now_add=True)
    author=models.CharField(max_length=20)
    text=models.TextField()

    class Meta:
        verbose_name='文档'		#数据库表的名称显示
        verbose_name_plural='文档集合'		#数据库表的名称集显示

    def __str__(self):
        return self.title

对应后台显示:

image-20231024122329678

迁移模型

对 app_name调用makemigrations(执行Python manage.py makemigrations命令)

让django迁移项目migrate(执行Python manage.py migrate命令)

Python manage.py makemigrations
Python manage.py migrate

image-20231019121839334

在生成的文件0001_initial.py中,可以看到数据库的修改

image-20231019122206923

向管理注册模型[admin.py]

注册模型使用Admin.site.register(模型名)

from django.contrib import admin

from baseapps.models import topic,documentes

# Register your models here.

admin.site.register(topic)
admin.site.register(documentes)

进入后台(http://127.0.0.1:8000/admin/),我们可以看到下图

image-20231019122433545

修改Django后台管理的名称

admin.site.site_header = '校园管理系统后台'
admin.site.site_title = '校园管理系统'
admin.site.index_title = '管理首页'

页面显示位置为:

image-20231024110741669

定义管理列表页面

修改类docAdmin

class docAdmin(admin.ModelAdmin):
    list_display = ('title','author','date_added',)     # ModelAdmin列表页展示的字段名

admin.site.register(documentes,docAdmin)   # docAdmin只有注册后才能使用

管理列表页变成:

image-20231024111318655

应用名称修改

  • 修改apps.py文件,添加以下内容:verbose_name=u’名称’
verbose_name = u'文章展示'  # 定义应用的名称
  • 修改__init__.py文件,添加以下内容(也可不添加)
default_app_config = "baseapps.apps.BaseappsConfig"

image-20231024121153235

管理列表添加查询功能

在admin.py对应的类中,添加search_fields = (‘查询对应的字段名’,)

class docAdmin(admin.ModelAdmin):
    list_display = ('title','author','date_added',)     # ModelAdmin列表页展示的字段名
    search_fields = ('title','author',)      #添加“标题”与“作者”的查询

image-20231024123023506

django shell

输入一些模拟数据,查看效果

image-20231019123907456

image-20231019123933160

输入两条数据条目后,我们得到

image-20231019124030816

交互式shell会话

python manage.py shell启动一个python解释器,通过它我们导入模型,使用object.all()来获取所有实例,返回的查询集(queryset)。

(schoolapps) E:\djangoProject\schoolapps>python manage.py shell
Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from baseapps.models import topic
>>> topic.objects.all()
<QuerySet [<topic: 资讯>, <topic: 活动>]>
>>> from baseapps.models import documentes
>>> documentes.objects.all()
<QuerySet [<documentes: 开放、选择、信任>, <documentes: 与创新者同行>]>
>>> n=topic.objects.get(id=1)
>>> n.text
'资讯'
>>> n.date_added
datetime.datetime(2023, 10, 19, 4, 15, 5, 840186, tzinfo=datetime.timezone.utc)
>>>

附:每次修改模型后,需要重启shell,才能看到修改的效果,退出快捷键“ctrl+Z”

认证和授权

后台设置用户与组的权限,用户必须设置为工作人员状态才能登录

image-20231024123250837

【源码免费下载链接】:https://renmaiwang.cn/s/6hcxp 在C语言中,链表是一种常见的数据结构,用于存储动态数据集合。在这个“基于C的简单链表合并2排序程序”中,我们需要处理两个已经排序的链表,a和b,每个链表的节点包含学号(假设为整型)和成绩(也假设为整型)。目标是将这两个链表合并成一个新的链表,并按照学号的升序排列。我们来了解一下链表的基本概念。链表不同于数组,它不连续存储数据,而是通过指针将各个节点连接起来。每个节点通常包含两部分:数据域(存储学号和成绩)和指针域(指向下一个节点)。要实现这个合并和排序的过程,我们可以遵循以下步骤:1. **定义链表节点结构体**: 创建一个结构体类型,如`Node`,包含学号(score_id)和成绩(grade)字段,以及一个指向下一个节点的指针(next)。```ctypedef struct Node { int score_id; int grade; struct Node* next;} Node;```2. **初始化链表**: 在程序开始时,创建a和b链表的头节点,并确保它们的初始状态为空。3. **读取链表数据**: 从输入文件(假设为11.8中的文件)中读取数据,根据学号和成绩创建新的节点,并将其添加到相应的链表a或b中。这一步可能需要使用`fscanf`函数从文件中读取数据,并使用`malloc`分配内存创建新节点。4. **合并链表**: 合并两个链表的关键在于找到合适的位置插入b链表的节点。从头节点开始遍历a链表,比较当前节点的学号b链表头节点的学号。如果b链表的学号更小,就将b链表的头节点插入到a链表的当前节点后面,然后继续比较b链表的新头节点(原头节点的下一个节点)a链表的当前节点。当b链表为空或所有节点都已插入a链表时,合并完成。5. **排序链表**: 由于我们合并的时候
【源码免费下载链接】:https://renmaiwang.cn/s/0gh4u :“bp神经网络实现的iris数据分类”在机器学习领域,BP(Backpropagation)神经网络是一种广泛应用的监督学习算法,它主要用于解决非线性分类和回归问题。本项目实现了利用BP神经网络对鸢尾花(Iris)数据集进行分类。鸢尾花数据集是UCI机器学习库中的经典数据集,包含了三种不同鸢尾花品种的多个特征,如花瓣长度、花瓣宽度、萼片长度和萼片宽度,总计150个样本。:“bp神经网络实现的iris数据分类,UCI上下载的iris数据,适当调整误差精度,分类正确率可达到99%”我们需要理解UCI机器学习库中的Iris数据集。这个数据集由生物学家Ronald Fisher在1936年收集,是用于多类分类的典型实例。它包含3种鸢尾花(Setosa, Versicolour, Virginica)的4个特征,每种花有50个样本。在使用BP神经网络进行分类时,我们通常会先对数据进行预处理,包括数据清洗、标准化或归一化,以确保输入层的数值在同一尺度上。BP神经网络的核心在于反向传播算法,它通过计算预测值真实值之间的误差,并将误差从输出层向输入层逐层反向传播,调整权重以减小误差。在训练过程中,我们通常设置学习率、迭代次数以及停止训练的阈值,以达到最佳性能。在这个项目中,通过对误差精度的适当调整,使得网络能够在训练完成后对鸢尾花的分类准确率高达99%,这表明网络具有很好的泛化能力。【详细知识点】:1. **BP神经网络**:由输入层、隐藏层和输出层组成,通过梯度下降法和链式法则更新权重,以最小化损失函数。2. **鸢尾花数据集(Iris dataset)**:包含了150个样本,每个样本有4个特征和1个类别标签,常用于分类任务的基准测试。3. **特征工程**:预处理数据,可能包括缺失值处理、异常值检测
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值