django学习笔记(四)---基本流程三(视图,模板基本使用)

在firstapp/models.py文件里面添加一张表(class)

1、在settings.py里面修改数据库名,数据库密码
2、删除迁移文件0001_initial.py
3、在数据库中创建对应第一步的数据库
4、执行生成迁移文件python manage.py makemigrations
5、执行迁移python manage.py migrate
6、进入sunck数据库(这个自己定义),show tables;可以看到数据库多了一张表
7、如果firstapp/models.py某张表想重新弄或者修改字段或者增加字段,尽量全删,删彻底,删除迁移文件0001_initial.py,删除数据库,重新来
6、启动服务python manage.py runserver
7、浏览器测试一下
8、创造管理员python manage.py createsuperuser

12、视图的基本使用:

1、概述

在django中,视图对web请求进行回应
视图就是python的函数,在views.py文件中定义

2、定义视图

from django.http import HttpRespones
def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

3、配置url

(1)修改project目录下的urls.py文件

from django.contrib import admin
from django.urls import include, path
urlpatterns = [
    path('firstapp/', include('firstapp.urls')),
    path('admin/', admin.site.urls),
]

(2)在firstapp应用目录下创urls.py文件

from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
]

现在您已经将索引视图连接到URLconf中。验证它是否使用以下命令:在project目录下输入:python manage.py runserver
在浏览器中转到http://localhost:8000/firstapp/,您将看到文本“Hello, world. You’re at the polls index.”。这是您在“索引”视图中定义的。
在这里插入图片描述
想要在http://localhost:8000/firstapp/输入数字,比如2

http://localhost:8000/firstapp/2/
1、定义视图

from django.shortcuts import render

from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

#这是新添加的代码    
def detail(request,num):
    return HttpResponse("detail-%s"%num)

2、 (1)project目录下的urls.py文件不需要重新配置
(2)在firstapp应用目录下编辑urls.py文件

from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
    path('<int:num>/', views.detail, name='detail'),#这是新添加的代码
]

在网址上http://localhost:8000/firstapp/2 得到如下图
在这里插入图片描述

扫描二维码关注公众号,回复: 11491243 查看本文章

想要在http://localhost:8000/firstapp/输入数字/再输入数字
例如http://localhost:8000/firstapp/100/2
1、定义视图

from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")
#下面函数需要在上面一个数字的基础上,再添加一个数字num2
def detail(request,num,num2):
    return HttpResponse("detail-%s-%s"%(num,num2))

2、 (1)project目录下的urls.py文件不需要重新配置
(2)在firstapp应用目录下编辑urls.py文件

from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
    path('<int:num>/<int:num2>', views.detail, name='detail'),#在一个数字的基础上再添一个,用斜杠隔开,注意第一对单引号里面是路径
]

在这里插入图片描述

13、模板的基本使用

1、概述

模板是HTML页面,可以根据视图中传递过来的数据进行填充

2、创建模板目录

创建templates目录,在目录下创建对应项目的模板目录(project/templates/firstapp)

【在project目录下创建templates文件(模板),在templates目录下,创建一个firstapp文件,对应firstapp应用视图,可以有多个应用视图,】

D:\program\python3\Django_learning\project>tree . /F

在这里插入图片描述

3、配置模板路径

修改settings.py文件TEMPLATES
BASE_DIR就是project目录,D:\program\python3\Django_learning\project

import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#project目录#D:\program\python3\Django_learning\project

settings.py文件下TEMPLATES中

'DIRS': [os.path.join(BASE_DIR,'templates')],#模板的目录就有了

在这里插入图片描述

4、定义grades.html和students.html模板(在templates/firstapp文件下)

模板语法 ------
1、{{可以是输出值,可以是变量,也可以是 对象.属性}}—想把值显示在页面上,用的是python代码
2、{%执行代码段%}

第一部分

http://localhost:8000/firstapp/
(1)写index.html模板
project/templates/firstapp/index.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<hody>
    <h1>sunck is good man</h1>#这是在网页上显示的东西
</hody>
</html>

(2)定义视图

from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
def index(request):
    #return HttpResponse("Hello, world. You're at the polls index.")
    return render(request,'firstapp/index.html')

(3)配置urls.py(firstapp文件下)

from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),

]

(4)出现如下图
在这里插入图片描述

一般情况下,一个URL,我们是这样写的:

urlpatterns = [
path(正则表达式, views视图函数,参数,别名),
]
参数说明:
1、一个正则表达式字符串
2、一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
3、可选的要传递给视图函数的默认参数(字典形式)
4、一个可选的name参数(别名)

第二部分

1、在(模板)templates/firstapp文件下添加保存grades.html和students.html

  1. 写grades.html和students.html模板
  2. 定义视图
  3. 配置url

grades.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>学生信息</title>
</head>
<hody>
    <h1>学生信息列表</h1>
    <ul>
        {%for student in students%}
        <li>
            {{student.sname}}--{{student.scontend}}--{{student.sgrade}}
        </li>
        {%endfor%}
    </ul>
</hody>
</html>

students.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>班级信息</title>
</head>
<hody>
    <h1>班级信息列表</h1>
    <ul>
        <!--[计算机一班,计算机二班,财务管理,市场营销]-->
        {%for grade in grades%}
        <li>
            <a href="{{grade.id}}">{{grade.gname}}</a>
        </li>
        {%endfor%}
    </ul>
</hody>
</html>

2、在project/urls.py文件下添加下面代码

from django.contrib import admin
from django.urls import include, path,re_path
urlpatterns = [
    path('firstapp/', include('firstapp.urls')),
    path('admin/', admin.site.urls),  
]

3、在firstapp/views.py文件下添加下面代码

from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
from . models import Grades
def grades(request):
    #去模板里取数据
    gradesList =Grades.objects.all()
    #将数据传递给模板,模板再渲染页面,将渲染好的页面,返回给浏览器
    return render(request,'firstapp/grades.html',{"grades":gradesList})
from .models import Students
def students(request):
    studentsList=Students.stuObj2.all()
     return render(request,'firstapp/students.html',{"students":studentsList})
 

4、在firstapp/urls.py文件下添加下面代码

from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
    path('grades/',views.grades),
    path('students/',views.students),
]

5、输入网址http://localhost:8000/firstapp/students/

在这里插入图片描述
6、输入网址http://localhost:8000/firstapp/grades/
在这里插入图片描述

第三部分

想要看班级里面有哪些学生
1、定义视图

from .models import Students,Grades
def gradesStudents(request,num):
    #获得对应的班级对象
    grade=Grades.objects.get(pk=num)#取出班级序号为num的班级
    #获得班级下的所有学生列表
    studentsList=grade.students_set.all()
    return render(request,'firstapp/students.html',{"students":studentsList})

在这里插入图片描述

2、配置firstapp/urls.py文件

path('grades/<int:num>',views.gradesStudents),#注意最后面的逗号

在这里插入图片描述
3、输入网址http://localhost:8000/firstapp/grades/1
在这里插入图片描述
4、输入网址http://localhost:8000/firstapp/grades/2
在这里插入图片描述
5、输入网址http://localhost:8000/firstapp/grades/3
在这里插入图片描述
6、输入网址http://localhost:8000/firstapp/grades/4
在这里插入图片描述
7、或者输入网址http://localhost:8000/firstapp/grades/然后直接点击想要查询的班级学生,结果会和上面的3、4、5、6结果一样
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ingenuou_/article/details/104949280