Django学习路21_views函数中定义字典及html中使用类实例对象的属性及方法

创建 app6  在项目的 settings 中进行注册
INSTALLED_APPS 里面添加 'app6.apps.App6Config'

在 app6 的models.py 中创建数据表

class Student(models.Model):
    s_name = models.CharField(max_length= 16)

进行迁移
python manage.py makemigrations 
python manage.py migrate 

在 views 中添加函数
from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
from app6.models import Student


def hello(request):
    return HttpResponse("你好")

def index(request):
    # render 实质上也是返回 HttpResponse ,render 帮助把模板和context数据渲染成字符串
    '''
    temp = loader.get_template('index6.html')
    content = temp.render()
    return HttpResponse(content)
    两者等价
    return render(request,'index6.html')
    '''

    return render(request,'index6.html')

def getstudents(request):

    students = Student.objects.all()
    stu_data = {
        'students':students
    }
    return render(request,'students.html',context=stu_data)
注:
见名知意即可

在 urls.py 中添加
from django.conf.urls import url

from app6 import views

urlpatterns = [
    url(r'hello',views.hello),
    url(r'index',views.index),
    url(r'getstudents',views.getstudents)
]

创建 templates 文件夹,添加 students.html 对数据进行遍历
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h3>
    {% for stu in students %}
    <li> {{ stu.s_name }}</li>
    {% endfor %}
</h3>
</body>
</html

以上为 静态的显示接下来的是添加的内容
进阶内容 使用 变量

def getstudents(request):

    students = Student.objects.all()
    stu_dict = {
    #     自己定义的字典
        'hobby':'play',
        'time':'5 years'
    }

    stu_data = {
        'students':students,
        'stu_dict':stu_dict
    #     stu_dict 是自己定义的字典
    }


    return render(request,'students.html',context=stu_data)






students_list.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<ul>
    {% for stu in students %}
    <li> {{ stu.s_name }}</li>
    {% endfor %}
    <hr/><br/><br/>


    <li> {{ students.0.s_name }}</li>
{#      0   输出第一个数据 #}

    <hr/><br/><br/>

    {% for stu in students %}
    <li> {{ stu.get_name }}</li>
{#    此处使用的是类中定义的方法#}
    {% endfor %}

    <h3>{{ stu_dict.hobby }}</h3>
{#stu_dict 是自己创建的字典类型,使用的 hobby 是自己添加的键值#}
</ul>
</body>
</html>

注:
stu.s_name  遍历的对象获取名字
students.0.s_name 获取第一条数据的名字
stu.get_name 使用类内的方法获取姓名

    def get_name(self):
        # 使用类内定义的函数获取名字
        return self.s_name

stu_dict.hobby 使用自定义的字典元素
注: 需要写到 context 内部的 键中
    stu_dict = {
    #     自己定义的字典
        'hobby':'play',
        'time':'5 years'
    }

    stu_data = {
        'students':students,
        'stu_dict':stu_dict
    #     stu_dict 是自己定义的字典
    }

2020-05-13

posted @ 2020-05-13 16:21  CodeYaSuo  阅读(412)  评论(0编辑  收藏  举报