【Youtobe trydjango】Django2.2教程和React实战系列八【渲染数据库数据与模板加载顺序探究】

【Youtobe trydjango】Django2.2教程和React实战系列八【渲染数据库数据与模板加载顺序探究】

1. 准备数据

python shell看一下有数据
在这里插入图片描述

2. 渲染数据库数据到模板

products\views.py

from django.shortcuts import render

from .models import Product
# Create your views here.
def product_detail_view(request):
    obj = Product.objects.get(id=1)
    # context = {
    #     'title': obj.title,
    #     'description': obj.description,
        
    # }
    context = {
        'object': obj,
    }
    return render(request, "product/detail.html", context)

trydjango\urls.py

from products.views import product_detail_view

path('product/', product_detail_view),      # 产品

新建templates\product\detail.html

{% extends 'base.html' %}

{% block content %}
<h1>{{ object.title }}</h1>
<p>
{% if object.description != None and object.description != '' %}{{ object.description }}{% else %}Coming Soon!{% endif %}
</p>
{{ object.price }}
{% endblock %}

效果
在这里插入图片描述

3. 如何在app里加载django模板

products\templates\文件夹中创建文件夹products,然后在products里面创建文件products\templates\products\product_detail.html
将上面模板内容复制进来:

{% extends 'base.html' %}

{% block content %}
<h1>In App Template: {{ object.title }}</h1>
<p>
{% if object.description != None and object.description != '' %}{{ object.description }}{% else %}Coming Soon!{% endif %}
</p>
{{ object.price }}
{% endblock %}

先修改上面views.py中返回的静态文件路径为错误的return render(request, "products/detail.html", context)看下报错样子:
在这里插入图片描述
由报错可以看出django找模板的顺序:

  1. 先加载项目根目录的templates文件夹中的
  2. 然后去django应用admin和auth中的templates找
  3. 最后找自定义app应用的templates

以上位置都找不到相应的文件模板则报错
在这里插入图片描述

django.template.loaders.filesystem.Loader: E:\randolph\trydjango\src\trydjango\templates\products\detail.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\randolph\.virtualenvs\trydjango-2d__pVTL\lib\site-packages\django\contrib\admin\templates\products\detail.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\randolph\.virtualenvs\trydjango-2d__pVTL\lib\site-packages\django\contrib\auth\templates\products\detail.html (Source does not exist)
django.template.loaders.app_directories.Loader: E:\randolph\trydjango\src\trydjango\products\templates\products\detail.html (Source does not exist)

下面来做一个实验验证下,首先将src\trydjango\templates\product\detail.html修改文件夹和文件名为src\trydjango\templates\products\product_detail.html

src\trydjango\products\views.py中返回值修改为"products/product_detail.html"

from django.shortcuts import render

from .models import Product
# Create your views here.
def product_detail_view(request):
    obj = Product.objects.get(id=1)
    # context = {
    #     'title': obj.title,
    #     'description': obj.description,
        
    # }
    context = {
        'object': obj,
    }
    return render(request, "products/product_detail.html", context)

重启开发服务器后,刷新页面
在这里插入图片描述

然后随意重命名这个html文件 或 将根目录templates中的文件夹products直接删除:
在这里插入图片描述
这种情况djang只能找到应用中的静态文件
效果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 关注技术大牛或技术社区账号 在推特、youtobe等国外平台上,有许多知名的技术大牛或技术社区账号,他们会不定期地分享自己的编程技术、代码、技术栈学习心得和经验,通过关注他们,可以及时获取到最新的技术动态和学习资源。 2. 加入技术社区和论坛 参加技术社区和论坛可以与其他开发者互动,分享经验和技巧,提出问题并得到解答。同时,这些社区和论坛也会定期发布技术文章、教程和视频,帮助开发者学习和掌握新的编程技术和技巧。 3. 订阅技术博客和YouTube频道 订阅一些技术博客和YouTube频道可以获取到最新的编程技术和技巧,学习一些新的东西。在这些博客和频道中,你可以找到许多优秀的作者和视频,他们会为你提供很多技术资源和学习资料。 4. 参加在线课程和学习活动 参加在线课程和学习活动可以帮助你更深入地学习和掌握编程技术和技巧。在这些课程和活动中,你可以与其他开发者互动,分享经验和技巧,并且得到一些专业的指导和建议,帮助你更快地成长。同时,这些课程和活动也会提供一些实际操作和项目,帮助你将所学的知识应用到实际中。 总之,利用推特、youtobe等国外平台进行编程技术、代码、技术栈的学习需要多方面的参与和学习,要掌握好自己的学习方法和步骤,才能更好地进行学习和提高自己的技术水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值