zoukankan      html  css  js  c++  java
  • 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 得到如下图
    在这里插入图片描述

    想要在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:programpython3Django_learningproject>tree . /F

    在这里插入图片描述

    3、配置模板路径

    修改settings.py文件TEMPLATES
    BASE_DIR就是project目录,D:programpython3Django_learningproject

    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:programpython3Django_learningproject

    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结果一样
    在这里插入图片描述

  • 相关阅读:
    lora网关模块的原理
    Redis(三)Redis的高性能和持久化
    Redis(二)Redis基本数据结构和使用场景剖析
    Redis(一)安装redis【linux版】
    并发编程(九)抽象队列同步器AQS解析
    then、catch正常返回时Promise的状态,如何修改Promise的状态
    promise优化回调地狱
    es集群状态正常,kibana报500的server error的处理办法
    Node.js(一)Node.js简介、安装及环境配置之Windows篇
    JavaScript(一)JS的历史和简介
  • 原文地址:https://www.cnblogs.com/llb123/p/13398718.html
Copyright © 2011-2022 走看看