本节我们将会和大家讲如何将你想要传达给用户的信息通过Django呈现在界面上,此时,我们需要用到模板。什么是模板?你可以理解为前端固定的形式,形式是可以根据不同需求指定的,但是内容可以变化。就比如你进入淘宝页面,淘宝页面上边固定搜索和旁边是导航页面,中间是商品陈列区位置,但是你每次进入时,陈列的商品都会不一样。所以,模板就是表现的框架,而模板内的数据可以根据需求任意改动。
模板就是前端框架
文章标题:{{ article_obj.title }}
文章内容:{{ article_obj.content }}
以上代码就是Django模板的内容,我们可以看到除了{{ }}内容,其余的和HTML无本质区别。
那么,{{}} 实则就是模板中关键的信息。如何将我们希望用户看到的内容传到模板中?
上述{{ article_obj.title }}传递的是文章标题和{{ article_obj.content }}传递的是文章内容。
还记得我们之前学过views.py文件时响应函数和返回响应界面的地方吗?回顾一下
中views.py的内容。
# views.py
#from django.shortcuts import render
from django.http import HttpResponse
from . import models
# Create your views here.
def index(request):
article=models.Article.objects.get(pk=1) # 获取主键为1的文章实例
title=article.title #获取上述文章的标题
content=article.content # 获取上述文章的内容
return HttpResponse("
文章标题:%s
文章内容:%s" % (title,content))
以上是将文章的标题传给title,内容传递给content,最后通过Http响应返回到前端。
此处,我们只需要将Http响应改写为render函数,将需要传递的内容指向特定html路径即可
# views.py
from django.shortcuts import render_to_response
#from django.http import Http404
from . import models
# Create your views here.
# Create article with title and content here
def article_detail(request,article_id):
try:
article=models.Article.objects.get(pk=article_id) #获取pk=1,2,3的文章
# 需要将获取的对象存成字典的形式,即context
context={}
context['article_obj']=article
# html文件识别字典对象,将数据展示到前端页面
return render_to_response("articleDetail.html" , context)
注意:html接收响应对象是字典形式,因此context必须写成字典。
2. 同时在该应用下创建templates文件夹,在templates/下创建html文件,命名为:articleDetail.html. 即上述render_to_response 的第一个参数。
3. 打开templates/articleDetialail.html 文件,编辑如下:
文章标题:{{ article_obj.title }}
文章内容:{{ article_obj.content }}
其中,article_obj为context的key,模板文件接收参数的方式即{{ key.*** }}
4. 修改url.py文件
from django.contrib import admin
from django.urls import path
from myfrtsite import views
urlpatterns = [
path('admin/', admin.site.urls),
path('myfrtsite/article_detail/', views.article_detail,name="article_detail"),
]
我们可以看到,文章内容详情的路径为myfrtsite/article_detail/,后面是是具体哪篇文章的参数,和views.py中参数名称一致。因此,在myfrtsite/article_detail/1可获取数据库中第一篇文章内容,myfrtsite/article_detail/2可获取数据库中第二篇文章内容...
5.最后,我们打开服务器
python manage.py runserver
再次,更改上面127.0.0.1:8000/myfrtsite/article_detail/ 后面的数字试试看,你会发现当数据库没有文章后,会报错(处理错误的方法在代码中写明,这里不再赘述)。
修改后,如果输入的文章id超过范围,会报404错误
6. 如何在后台管理器中增加 文章?
打开admin界面-MYFSTSITE-增加
保存后,你的数据模型中就会增加一篇文章。
后续,我们会对这个界面进行改造,今天就讲到这里哈~下节课将会带大家将这个代码发布到公网。是不是有点小激动~ 让我们创建第一个属于自己的网站啦~