python django 信息管理系统_「Python学习日记」Django从零开始,搭建学生管理系统(1)...

个人觉得,从简单的项目入手,这样学起来会很快。

在项目中,发现问题就说问题。

有错误的地方,欢迎大家指正出来,我去修改。也欢迎大家一起交流。

网上有很多python的基础教程,毕竟是基础,所以大多都是免费的,大家可以看看,有一点基础应该都可以看得懂。跟着一起边做简单的项目,边学习了

首先,打开pycharm创建名为:stu_test的项目,如图:

点击+Create Nwe Project

创建Django项目

左侧选中Django,这里我的项目路径:E:\django_test\stu_test (stu_test是我的项目名称)

选择python解释器,这里我用本机的虚拟环境,选择第二个选项。第一个选项是创建虚拟环境。

最下面,填写APP的名称,这里用app01(只是学习阶段,名字随便起的,本人词量太少了,大家海涵)

点击Create,创建我的们的项目。(等待加载完成),项目就创建成功了,目录结构如下:

项目结构

创建完成,第一时间先设置(stu_test/stu_test/settings.py)

由于是pycharm创建的,app自动就帮我们添加好了,模型也配置好了,我们可以先不管

数据库我们就先用sqlite吧,这是Django自带的,我们现在只是学习,暂时也够用了。

就先拉到最下面,修改下面两项,一个是语言环境,一个是时区。

from django.db import models# 添加的表都需要继承自models.Model# 创建名为StuClass的班级表class StuClass(models.Model):#models.CharField()字段类型为char # verbose_name="班级" 设置字段名为班级 # max_length=10 长度为10 # null=False 不可以为空 # unique=True不允许重复 class_stu = models.CharField(verbose_name="班级", max_length=10, null=False, unique=True)# auto_now_add=True 添加的时间 # 增加下面两个字段,方便到时候维护统计 add_time = models.DateTimeField(verbose_name="添加时间", auto_now_add=True)# auto_now=True 当前时间 updata_time = models.DateTimeField(verbose_name="添加时间", auto_now=True)# 创建名为Students的学生表class Students(models.Model): name = models.CharField(verbose_name="姓名", max_length=6, null=False) age = models.IntegerField(verbose_name="年龄", null=False)# 构造一个元组 genders = ( (0,"男"), (1,"女"), ) # choices的意思是选择,choices=genders在genders中选择 gender = models.IntegerField(verbose_name="性别", choices=genders) add_time = models.DateTimeField(verbose_name="添加时间", auto_now_add=True) updata_time = models.DateTimeField(verbose_name="添加时间", auto_now=True)# 设置外键,与StuClass(班级关联起来) # on_delete=models.CASCADE 的意思就是关联删除 # 所属的班级删除了,相应的学生也会删除forkey = models.ForeignKey(to=StuClass, on_delete=models.CASCADE)

接下来就要添加字段了,我们先做个简单分析,构建一个结构,如图:(用记事本写的,有点渣,大家有好用的工具可以推荐下)

字段结构导图

通过上图可以发现,字段中要包含班级,姓名,性别,年龄这几个字段。

其中每个班级中都有姓名,性别,年龄。(文字说不清了,最好的表达形式就是代码,我们上代码):

位置:stu_test/app1/models.py

python manage.py makemigrations

字段创建完毕,把字段添加到管理后台(Django自带的,不用自己写,是不是很方便?)

位置:stu_test/app1/admin.py (一看知道admin是管理员的意思)

from django.contrib import admin# 导入models,就是我们刚写的字段类,同级目录我们用.models,星号代表导入全部from .models import * # 加入我们写的两个表# admin.site.register 这一串死记硬背吧,发现这个在pycharm中没有提示admin.site.register(StuClass)admin.site.register(Students)

接下我们迁移数据 打开Terminal(在pycharm的左下角)如图

Terminal

这里我们要注意方框里面,Djang_env 是使用的虚拟环境

E:\django_test\stu_test 是当前路径

输入下面代码,迁移文件

python manage.py migrate

提示如下

生成迁移文件完毕

迁移文件生成了,接下来开始迁移

继续输入如下代码

python manage.py createsuperuser

提示如下:

数据迁移完毕

数据已经迁移完毕了。

我们要通过管理后台录入学生信息,那么就要创建管理员账户。输入下面代码:

python manage.py createsuperuser

根据提示,我们一次填入用户名,邮箱,密码如图:

创建管理员账户(邮箱先随便写一个,假的)

我输入的密码是123456,说密码太常见了,要不要使用。

这里输入y 然后回车,就用这个密码。管理员账户就创建成功了。

接下来我们运行服务器,继续输入如下代码:

python manage.py runserver

提示如图:

启动服务器

这里的http://127.0.0.1:8000/ 其中127.0.0.1代表我们本机的,端口为8000。

服务器就跑起来了,接下来打开http://127.0.0.1:8000/admin(注意:地址里面的admin不是我们管理员用户名,是路由里面的地址,位置:stu_test/stu_test/urls.py中默认的,我们先不修改)

打开后如下:

管理后台登录页面

输入我们的用户名密码,我这里是admin和123456

我们会看到下图:

管理员登录后页面

这里可以看到之前创建的两个表,

后台表

看着是不是哪里有点别扭,两个表的名字英文的看起来很不舒服?

我们打开之前的models.py,修改代码如下

from django.db import modelsclass StuClass(models.Model): class_stu = models.CharField(verbose_name="班级", max_length=10, null=False, unique=True) add_time = models.DateTimeField(verbose_name="添加时间", auto_now_add=True) updata_time = models.DateTimeField(verbose_name="添加时间", auto_now=True) class Meta: verbose_name = "班级" verbose_name_plural = verbose_nameclass Students(models.Model): name = models.CharField(verbose_name="姓名", max_length=6, null=False) age = models.IntegerField(verbose_name="年龄", null=False) genders = ( (0,"男"), (1,"女"), ) gender = models.IntegerField(verbose_name="性别", choices=genders) add_time = models.DateTimeField(verbose_name="添加时间", auto_now_add=True) updata_time = models.DateTimeField(verbose_name="添加时间", auto_now=True)forkey = models.ForeignKey(to=StuClass, on_delete=models.CASCADE) class Meta: # 把表的名字改为学生 verbose_name = "学生"# 这句是复数的意思,我们都知道英语里面,复数大多数是在单词后面加s,如果我们不写这句 # 到时候显示的名字就是 学生s了 verbose_name_plural = verbose_name

保存一下,服务器会自动重启,我们刷新下刚才的页面:

更改名字后的

是不是看着就方便许多呢?

接下来我们添加数据,先添加几个班级,比如1班,2班,3班

这里就不细说了,都是中文,相信都会添加了。

添加完成后,我们进入班级里面,如图:

班级内

这都是什么,看起来很费劲。我们再打开models.py文件,修改如下代码:

from django.db import modelsclass StuClass(models.Model): class_stu = models.CharField(verbose_name="班级", max_length=10, null=False, unique=True) add_time = models.DateTimeField(verbose_name="添加时间", auto_now_add=True) updata_time = models.DateTimeField(verbose_name="添加时间", auto_now=True) class Meta: verbose_name = "班级" verbose_name_plural = verbose_name def __str__(self): return self.class_stuclass Students(models.Model): name = models.CharField(verbose_name="姓名", max_length=6, null=False) age = models.IntegerField(verbose_name="年龄", null=False) genders = ( (0,"男"), (1,"女"), ) gender = models.IntegerField(verbose_name="性别", choices=genders) add_time = models.DateTimeField(verbose_name="添加时间", auto_now_add=True) updata_time = models.DateTimeField(verbose_name="添加时间", auto_now=True) forkey = models.ForeignKey(to=StuClass, on_delete=models.CASCADE) class Meta: verbose_name = "学生" verbose_name_plural = verbose_name def __str__(self): return self.name

我们可以看到

# 班级表中多了:def __str__(self):# self.class_stu # self代表当前类 # self.class_stu就是当前类下的class_stu字段 # 不难发现,class_stu这个字段使我们定义的班级的名字 return self.class_stu# 学生表中多了:# 为什么要写这里呢,因为到时候添加学生的时候,也会是这样子# 你们可以先不写,到时候添加学生的时候再写也行# 这里直接加上,是为了减少一些没必要的复制def __str__(self):# 与班级同理 return self.name

保存一下,我们再刷新下页面看看,如图

修改后的班级列表

这样是不是就不别扭了,def __str__(self): 这里我们硬记下来就行

接下来我们添加学生。举一反三,应该学生大家也会添加了。现在是学习嘛,没必要加那么多,我大概加了一些,如图:

学生页面

这样,我们就把数据在后台录入完毕了。此篇到此结束,下一篇我们来讲如何配置路由,创建页面,以及增删改查,大家可以先自己动手敲一遍,增加一些印象,这样学起来也会快很多。

写了一下午了,该吃晚饭了,一天都没吃,饿的不行,大家也要多注意身体呀。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值