Django 课后练习题
1. Python 虚拟环境创建
请根据下列方法选择一种创建 Python 虚拟环境,并按要求安装课程所需包。
在 Python 中,虚拟环境是一种隔离的工作环境,可以防止不同项目的依赖项之间相互干扰。有多种方法可以创建 Python 虚拟环境,以下是其中几种常见的方法:
使用 venv 模块创建虚拟环境 ——推荐使用
使用 virtualenv 创建虚拟环境
使用 conda 创建虚拟环境
以上是三种常见的 Python 虚拟环境创建方法,其中 venv 和 virtualenv 是在命令行中使用的,而 conda 是 Python 第三方库,需要先安装。另外,在 Windows 系统中,需要使用 Scripts 目录下的 activate.bat 文件来激活虚拟环境。
2. pip 源设置
请根据需求设置 pip 源
pip 源设置的方法有修改 pip 配置文件和使用代理两种方法。
修改 pip 配置文件:在 pip 配置文件中添加相应的源。
使用代理:在命令行中使用代理命令进行设置。
临时使用:在 pip install 命令后面加上 -i 参数,指定 pip 源。例如:
永久修改:在 Linux 系统中,修改 ~/.pip/pip.conf 文件(没有就创建一个),指定 pip 源。例如:清华大学源。
请切换 pip 源为国内源,可多次尝试。
国内 pip 源有:
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple;
阿里云:https://mirrors.aliyun.com/pypi/simple;
中国科学技术大学:https://pypi.mirrors.ustc.edu.cn/simple;
华中科技大学:http://pypi.hustunique.com/;
豆瓣源:http://pypi.douban.com/simple;
腾讯源:http://mirrors.cloud.tencent.com/pypi/simple;
华为镜像源:https://repo.huaweicloud.com/repository/pypi/simple。
4. Django 项目搭建
根据下列流程搭建一个学生管理系统。
创建 Django 项目的步骤如下:
安装 Django:首先,确保你的系统上已经安装了Python。然后,通过以下命令安装 Django:
创建 Django 项目:使用以下命令创建一个新的 Django 项目:
其中,
project_name
是你的项目名称。这将在当前目录下创建一个名为project_name
的文件夹,其中包含了一个基本的 Django 项目结构。配置项目:进入项目文件夹:
然后,编辑
settings.py
文件,根据你的需求配置项目设置,例如数据库设置、静态文件路径等。创建应用:使用以下命令创建一个新的 Django 应用:
其中,
app_name
是你的应用名称。这将在project_name
文件夹下的app
文件夹中创建一个新的应用。定义模型:在应用中定义数据库模型。打开
app/models.py
文件,并定义你的模型类。这些模型类将映射到数据库中的表。创建数据库表:运行以下命令来创建数据库表:
这将根据你在
models.py
文件中定义的模型创建数据库表。编写视图和模板:在应用中编写视图和模板文件,以实现具体的业务逻辑和页面呈现。
运行项目。运行开发服务器。在终端中输入以下命令来启动开发服务器:
5. 创建班级和学生表
请按下列方法创建班级、学生表
在Django中创建班级和学生表,需要执行以下步骤:
创建Django应用
如果还没有创建Django应用,请执行以下命令创建一个新的Django应用:
其中
myapp
是你想要创建的应用名称。定义班级和学生模型
在
myapp/models.py
文件中定义班级和学生模型。例如:这里我们定义了两个模型,
Classroom
和Student
,并在Student
模型中通过ForeignKey
字段关联了Classroom
模型。生成迁移脚本
执行以下命令生成迁移脚本:
其中
myapp
是刚刚创建的应用名称。这个命令会在myapp/migrations/
目录下生成一个迁移脚本文件。执行迁移命令
执行以下命令将模型应用到数据库中:
这个命令会将迁移脚本应用到数据库中,创建相应的班级和学生表。如果迁移成功,就可以在Django的admin后台管理页面中看到这两个表,并进行增删改查等操作。
6. QuerySet 和 Instance增删改查
请使用QuerySet 和 Instance在班级、学生表上进行增删改查。
在Django中,我们可以使用QuerySet和实例对班级和学生表进行增删改查操作。以下是一些例子:
增加(Create)
创建新的班级和学生实例:
查询(Retrieve)
使用QuerySet查询班级和学生:
更新(Update)
更新班级或学生的属性:
删除(Delete)
删除班级或学生:
注意,删除一个班级将会同时删除与之关联的所有学生,因为我们在学生模型中设置了on_delete=models.CASCADE
。这意味着当一个班级被删除时,与之关联的学生也会被删除。如果你不希望这样,你可以考虑更改on_delete
参数的设置。例如,设置为models.SET_NULL
将会在删除班级时将学生的班级设置为NULL。不过,这样你需要确保学生的班级字段允许为NULL。
7. 使用serializers 序列化、APIView 创建班级和学生查询
请对创建的班级、学生表进行序列化。
要使用APIView创建班级和学生的查询视图,你需要执行以下步骤:
首先,确保你已经安装了Django REST framework。如果没有安装,可以使用以下命令进行安装:
然后,你可以使用以下代码在Django中创建班级和学生的查询视图:
在
myapp
应用中创建一个名为views.py
的文件(如果尚未创建)。在
myapp/models.py
文件中定义班级和学生模型。可参考task5在
views.py
文件中,导入所需的模块并创建查询视图。例如:在上述代码中,我们创建了两个视图,一个用于查询所有班级,另一个用于查询所有学生。这些视图继承了
APIView
,并使用了Django REST framework 的Response
和序列化器来处理数据。你还需要创建序列化器,以便将班级和学生实例转换为 JSON 格式。在
myapp
应用中创建一个名为serializers.py
的文件,并在其中定义序列化器。例如:最后,在你的应用的
urls.py
文件中添加URL配置,以便将视图与URL进行关联。例如:
现在,当你访问/classrooms/
路径时,你将获得所有班级的列表,当你访问/students/
路径时,你将获得所有学生的列表。这些视图会以JSON格式返回数据。
8. 使用 ModelViewSet 创建班级、学生查询 view
请使用 ModelViewSet 创建班级、学生查询 view。
使用 ModelViewSet
可以更方便地创建班级和学生的查询视图。ModelViewSet
是 Django REST framework 提供的一个视图集,它提供了默认的 list()
和 retrieve()
方法,适用于查询操作。
下面是使用 ModelViewSet
创建班级和学生查询视图的步骤:
在
myapp
应用的views.py
文件中,导入所需的模块并创建ModelViewSet
子类。例如:在上述代码中,我们创建了两个视图集,
ClassroomViewSet
用于处理班级的查询操作,StudentViewSet
用于处理学生的查询操作。我们指定了queryset
属性来定义视图中使用的查询集,以及serializer_class
属性来定义用于序列化和反序列化数据的序列化器。在应用的
urls.py
文件中,使用路由器(Router)自动生成 URL 配置。这样可以简化 URL 的定义。首先,导入路由器类,然后在urls.py
文件的底部添加以下代码:
上述代码使用路由器注册了班级和学生视图集,并将生成的URL模式添加到 urlpatterns
列表中。
现在,当你访问 /classrooms/
路径时,你会获得所有班级的列表,并且可以通过 /classrooms/<id>/
路径访问特定班级的详细信息。类似地,通过访问 /students/
路径,你可以获得所有学生的列表,并通过 /students/<id>/
路径访问特定学生的详细信息。
最后更新于