04使用模板显示内容
技术交流QQ群:1027579432,欢迎你的加入!
本教程来源于B站杨仕航Django2.0开发视频教程,如需转载,必须注明来源!
1.查看文章页面
- 如何通过统一的一个处理方法获取每一篇文章?解决方法:利用文章的唯一标识!
- 具体实现:打开article文件夹下的migrations/0001_initial.py,我们可以看到区别每篇文章的字段是id。因此,在article文件夹下的views.py文件中定义视图文件,如下所示:
from django.http import HttpResponse # Create your views here.def article_detail(request, article_id):return HttpResponse('文章id: %s' % article_id)
- 在mysite文件夹下的urls.py文件中添加每篇文章的路由地址,如下所示:
from article.views import article_detailurlpatterns = [path('article/<int:article_id>', article_detail, name="article_detail"), ]
2.objects
- 模型的objects是获取或操作模型的对象,具体的方法如下:
Article.objects.get(条件) Article.objects.all() Article.objects.filter(条件)
- 在article文件夹下的views.py文件中写入需要在前端页面上展示的字段,如下所示:
from django.shortcuts import render from django.http import HttpResponse, Http404 from .models import Article # Create your views here.def article_detail(request, article_id):try:article = Article.objects.get(id=article_id)except Article.DoesNotExist:raise Http404('Not Exist')return HttpResponse('<h2>文章标题: %s</h2> <br /> 文章内容: %s ' % (article.title, article.content))
3.使用模板
- 使用模板的目的:前端页面和后端代码分离,减少耦合性。优化上一步中article文件夹下的views.py文件前后端代码的耦合性。
- 具体步骤如下:
- 在article文件夹下创建templates文件夹,里面存放前端页面所需要的html文件;
- 在templates文件夹下创建article_detail.html文件,然后对其进行编辑;
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title> </head> <body><h2>{{ article_obj.title }}</h2><hr><p>{{ article_obj.content }}</p> </body> </html>
- 同时,对article文件夹下的views.py文件中代码进行优化,优化的结果是:
from django.shortcuts import render_to_response, get_object_or_404 from .models import Article # Create your views here.def article_detail(request, article_id):article = get_object_or_404(Article, pk=article_id)context = {}context['article_obj'] = articlereturn render_to_response('article_detail.html', context)
4.获取文章列表
- 在article文件夹下的views.py文件中添加如下代码,实现获取文章列表的功能。
def article_list(request):articles = Article.objects.all()context = {}context['articles'] = articlesreturn render_to_response('article_list.html', context)
- 在templates文件夹下创建article_detail.html文件,然后对其进行编辑;
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title> </head> <body><!-- {% 这是模板标签 %} -->{% for article in articles%}<a href="{% url 'article_detail' article.pk %}">{{ article.title }}</a>{% endfor %} </body> </html>
- 在mysite文件夹下的urls.py文件中添加文章列表article_list的路由地址,如下所示:
from article.views import article_detail, article_list urlpatterns = [path('admin/', admin.site.urls), # 根路由(后台管理网址):www.baidu.com/admin/path('', views.index), # www.baidu.compath('article/<int:article_id>', article_detail, name="article_detail"),path('article/', article_list, name="article_list"), ]
- 打开浏览器,输入网址http://localhost:8000/article/,注意:此url中并没有指定哪一篇文章的article_id就可以获得所有的文章信息,如下所示:
5.总urls包含app的urls
- 打开mysite文件夹下的全局路由文件urls.py,将如下代码剪切到article文件夹下的urls.py(如果没有该文件,需手动新建此文件),
# localhost:8000/article/1 path('<int:article_id>', article_detail, name="article_detail"), # localhost:8000/article/ path('', article_list, name="article_list"),
- 对article文件夹下新建的urls.py文件进行编辑,添加如下内容:
from django.urls import path from .import viewsurlpatterns = [path('article/<int:article_id>', views.article_detail, name="article_detail"),path('article/', views.article_list, name="article_list"),]
- 接着,打开mysite文件夹下的全局路由文件urls.py,在当中引用article这个app的路由文件,添加如下内容:
from django.urls import path, includeurlpatterns = [# .....path('article/', include('article.urls')), ]
04使用模板显示内容相关推荐
- GridView中FooterTemplate模板下内容不显示
GridView的FooterTemplate模板下内容默认是不显示的,需GridView属性 ShowFooter="true"时FooterTemplate模板里的内容才会显示 ...
- 齐博 src=/do/js.php?id=775,齐博CMS列表页,内容页的边栏,用不同的模板显示的方法...
齐博CMS让 列表也,内容页 的 边栏(就是"最新文章""热门文章""推荐文章"那些) 用不同的模板显示的方法 首先,说说思路: 边栏的样式 ...
- [转]thinkphp 模板显示display和assign的用法
thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ...
- word文档打不开显示内容有问题要怎么解决?
word文档打不开显示内容有问题的原因是模板文件损坏所致,删除默认模板,然后重建即可,具体步骤如下: 1.把附件转存到本地硬盘,但仍旧报错,点击右键属性,找到解除锁定的选项. 2.解除后文档就可以正常 ...
- VUE+Element-ui实战之el-calendar日历自定义显示内容
目录 1.确保添加el-calendar组件 2.遍历日期,确定显示内容 3.最终实现效果 4.完整代码 1.确保添加el-calendar组件 确保你的element引入了el-calendar组件 ...
- 帝国cms php调用模板变量,帝国cms列表封面模板和内容模板变量的讲解
往往在免备案空间中建立了帝国cms源码程序之后,那么有些必要的变量还是我们需要知道的,比如说重写模板的时候,那么这个时候也是需要注重的,所以说可以说扩展变量的重要性相信建立过帝国cms站长朋友来说,应 ...
- 蒂森服务器显示0009,蒂森电梯故障代码显示内容及处理方法
蒂森电梯发生故障的时候显示一串的代码是代表什么意思?下面电梯招聘网为你整理的关于蒂森电梯故障代码显示内容原因对策,希望对你有帮助! 02 Door series open while in motio ...
- 光脚丫思考Vue3与实战:第04章 模板语法 第01节 概述+插值
下面是本文的屏幕录像的在线视频: 光脚丫思考Vue3与实战:第04章 模板语法 第01节 插值 温馨提示: 1.视频下载:线上视频被压缩处理,可以下载高清版本: 链接:https://pan.baid ...
- 浏览器页面及后端页面都没报错,但是不显示内容?
在做项目进行订单查询时时出现异常情况: (1)订单页面显示为空: (2)后台查找不出错误信息: Connected to server [2020-08-16 04:00:10,972] Artifa ...
最新文章
- 点、线、面生成mvt(MapBox Vector Tile)格式的瓦片总结
- C++vector迭代器失效的问题
- 数据挖掘 —— 数据预处理
- OpenGL之矩阵的基本变换和矩阵堆栈
- [转]C++中的static关键字的总结
- Java中Long到Int的精确转换
- 她偏爱雏菊一样的淡黄色_为什么开源项目(非常)偏爱新用户,以及您可以采取什么措施...
- 【转载】单片机应用系统断电时的数据保护方法
- 独立站可以一个人做吗?
- 零基础入门语义分割-Task4 评价函数与损失函数
- 甘肃银行借助HDIM打造综合数据保护平台
- 苹果电脑硬盘数据丢失后如何恢复?
- 2021年中国粮食行业发展现状分析,粮食播种面积、产量再度迎来上涨「图」
- c语言网页版在线编译器_简单好用的网页版在线公式编辑器
- 将阿拉伯数字转为中文数字读法
- 输出数字矩阵并把最后变为PUM
- vue-cli搭建项目,使用localhost或ip地址均可访问
- 一个 R 包带你挖掘宏基因组公共数据库
- windows 系统防火墙 添加端口号方法
- Java毕业设计:校园二手闲置物品交易网站(java