django后台循环_「Python学习日记」Django从零开始,搭建学生管理系统(2)

「Python学习日记」Django从零开始,搭建学生管理系统(1)

上篇说到添加完数据了,下面我们接着继续

如何去展示呢,首先我们要有链接吧?

我们访问127.0.0.1:8000,这个是我们的主页,如图

15ef9a67397b00c7827ead9fa61a1123.png

Django首页

这里显示的是Django的首页,并不是我们的,那我们接着往下来

打开stu_testapp01views.py文件,写上如下代码:

from django.shortcuts import render# 引入HttpResponsefrom django.http.response import HttpResponse# 导入之前写的模型类from .models import *# 第一个参数必须是request,这点要注意# 函数的意思就是返回"这是首页"def index(request):    return HttpResponse("这是首页")

再打开stu_teststu_testurls.py,写上如下代码:

from django.contrib import adminfrom django.urls import path# 引入刚写的viewsfrom app01 import viewsurlpatterns = [    path('admin/', admin.site.urls),  # 这里添加路由,空字符串表示是首页的意思,  # views.index 表示访问首页时,调用views.index  # 注意:views.index 后面是没有括号的    path('', views.index),]urlpatterns = [    path('admin/', admin.site.urls),    path('', views.index),    path('class/', views.stuc),]

刷新127.0.0.1:8000页面,我们会看到如下内容

37ee56b443038b040637752d6fa02810.png

首页

这里可以发现urls路由的作用是匹配地址,然后运行指定的函数。也就是分发的意思。

views 里面放的是用来执行的函数,返回对应的页面或者数据

大概理清楚思路了,我们接着写

刚才的首页太简陋了,先创建一个页面

右键templates -> new -> HTML File

0b116a4c2e2395ac7f01c5ead2099022.png

创建HTML

2d513b455588c8aa19d20411fa2fb175.png

给html命名

起个名字,这里就叫index, 然后回车,就创建好了。

打开刚创建的html页面,

title修改首页,保存

再切回views,把之前的代码修改如下:

def index(request):   # 第一个参数就是request, 第二个参数这里是我们刚写的html    return render(request, "index.html")

保存,我们在浏览器刷新下,会看到

9228c044d62e2704c6405ca24e02a689.png

首页html

这个就是我们刚写的页面。到这里整体的流程就通了。

接下来把数据显示到页面上。例如,我这里想在首页里面显示出全班级,然后点击进去,会看到班级里面所有学生的信息。就按照这个思路先来写。

先做首页,既然是首页返回的,就要在刚写的views里的首页的函数里面写。

比如我们要返回所有的班级,代码如下

def index(request):     # 这里是查询语句,查询所有班级 后面的all() 就已经说明问题了     # student_class用来接收查询的内容     # locals() 暂时就理解成,在index里面的所有局部变量都返回过去     # 当然,我说的并不专业,大家理解就好    student_class = StuClass.objects.all()    return render(request, "index.html", locals())

这样就把数据给到了index.html中。

接下把数据给填写到首页中去

打开index.html,代码如下:

    首页    {% for stuclass in student_class %}                      {{ stuclass.class_stu}}            {% endfor %}

猛一看,感觉有点复杂,这里大概解释一下。

# {% %} 这样括起来的是python的语句{% for stuclass in student_class %}{% endfor %}# {{   }} 这样括起来的是变量 {{ stuclass.class_stu}}

保存代码,刷新下首页看看是什么

6f7c47caf24b01aa3ec7c6464a8c6ea4.png

首页

这样我们之前在后台添加的所有班级的数据就列了出来。

要是想点击进去,看到全部同学的名字呢?

首先,我们再urls中添加:

urlpatterns = [    path('admin/', admin.site.urls),    path('', views.index),  # 添加新的路由  # 是把参数传给views.stuc  # id代表传入的参数名字  # 意思是把一个int类型的参数id传给views.stuc  # 这个int类型的参数是上面的html传递过来的    path('class//', views.stuc),]

接着我们写views.stuc 切换views.py,写上

# 由于路由传过来的有个参数,所以这边要加一个参数,我们也命名为id好了def stuc(request, id):# 这个语句的意思就是,在Students中查询forkey=id的全部数据    # forkey就是外键的意思    # index传的的班级里面的主键    # 我们再models里面定义的学生表里面,班级的主键是学生的外键    # 这里通过查询外键相对应的,就等于是这个班级的了    students = Students.objects.filter(forkey=id).all()    return render(request, "stu_class.html", locals())

这里返回的有个html,我们新建一个stu_class.html,打开后,代码如下

    学生列表      # students是views中stuc穿过来的,由于是个列表,所有要用for循环给拿出来    {% for student in students %}                  # name   ,gender   ,age都是我们再models里面定义的字段,直接拿来用就可以了            学生姓名:{{ student.name }}----学生性别:{{ student.gender }}----学生年龄:{{ student.age }}            {% endfor %}

刷新下,我们点击1班,看一下

ec6f8ddbd07460426256300cd8736347.png

学生列表

学生确实都出来了,可是这个性别看着有点别扭。回看我们models中定义性别的代码:

   genders = (        (0,"男"),        (1,"女"),    )    gender = models.IntegerField(verbose_name="性别", choices=genders)

我们用了choices选择器,所以stu_class.html可以这么写

学生姓名:{{ student.name }}----学生性别:{{ student.get_gender_display }}----学生年龄:{{ student.age }}

get_gender_display,中间的gender是我们定义的性别字段的名字。

这种方法用于使用了choices选择器的字段,保存一下,我们刷新下看看

2e53d4dc8796b30c8e57d0f3da932b12.png

get_gender_display

这看起来就舒服多了。记住这个关键点哦。

到这里 ,我们这个简易的学生管理系统就实现了。

注意,只是一个简易的学生管理系统。要求不能太高。

通过这个简单的项目,是不是有发现自己哪里有不足?哪里有疑问?

这就是实战项目的好处。欢迎大家来跟我一起交流学习。

下一篇我们做个系统的整理,好用来对我们的不足以及疑问来进行个补充。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值