个人觉得,从简单的项目入手,这样学起来会很快。
在项目中,发现问题就说问题。
有错误的地方,欢迎大家指正出来,我去修改。也欢迎大家一起交流。
网上有很多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): 这里我们硬记下来就行
接下来我们添加学生。举一反三,应该学生大家也会添加了。现在是学习嘛,没必要加那么多,我大概加了一些,如图:
学生页面
这样,我们就把数据在后台录入完毕了。此篇到此结束,下一篇我们来讲如何配置路由,创建页面,以及增删改查,大家可以先自己动手敲一遍,增加一些印象,这样学起来也会快很多。
写了一下午了,该吃晚饭了,一天都没吃,饿的不行,大家也要多注意身体呀。