Django学习Day8——模版的使用(五)

Django中模版的使用

模版的基础知识和使用方法在前面的博客中已经有过相关的介绍,这篇博客从项目的角度出发,结合前面路由和视图中的练习项目,加入模版,使得之前的项目更加完善。之前的项目回顾可以参见Django学习Day3——视图和路由(二) ,主要是借助豆瓣平台提供的API进行音乐的查找,不过当时因为没有进行前端的渲染,直接在命令行模式下进行音乐的查询,这次的项目,加入模版,将查询到的结果展示在前端页面。具体的实现过程如下:

创建模版文件,进行相关配置

首先在根目录下创建templates文件夹以及music.html模版文件,并且在项目的设置中完成模版路径的配置。

修改视图函数

文件路径(app_search/views.py)

# coding:utf-8
from django.views.generic import View
# from django.http import JsonResponse
import requests
from django.shortcuts import render

class Music(View):
    DOUBAN_API = "https://api.douban.com/v2/music/search?q={0}"
    TEMPLATE = "music.html"
    def get(self, request, music_name):
        # 拼接查询的URL
        url = self.DOUBAN_API.format(music_name)

        # 通过requests模块进行访问
        try:
            re = requests.get(url)
        except Exception as e:
            return render(request, self.TEMPLATE, {'error':str(e)})

        # 如果返回的状态码不是200,说明请求豆瓣的API没有成功
        if re.status_code != 200:
            return render(request, self.TEMPLATE, {'error':'请求豆瓣异常!'})

        response = re.json()
        return render(request, self.TEMPLATE, response)

编写music.html模版文件

在编写music.html文件之前,我们首先使用之前的命令行窗口调用的方式,对于豆瓣API返回的数据有一个基础的认识:

可以看到,返回的data数据中,有"count","start","total","musics"四个字段,我们选择"count"字段(显示查询的结果条数)和"musics"字段(查询的音乐详细结果)进行前端展示。

因为返回的查询结果中有多条音乐,我们以一条音乐为例,查看得到音乐的相关字段属性如上所示,我们选择"author","image","alt"进行展示。

所以,我们的music.html文件中的代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!--img网上地址的图片如果不能显示,需要加上下面这句话-->
    <meta name="referrer" content="no-referrer">
    <title>Music</title>
</head>
<body>
{% if error %}
<h3>出现错误:{
   
   {error}}</h3>
{% else %}
<h3>音乐名称:{
   
   {music_name}}</h3>
<div>共计{
   
   {count}}条数据</div>
<ul>
    {% for music in musics %}
    <li>
        <p>歌名:{
   
   {music.title}}, 演唱者:{% for person in music.author %}{
   
   {person.name}}{% endfor %}</p>
        <a href="{
   
   {music.alt}}"><img src="{
   
   {music.image}}"></a>
    </li>
    {% endfor %}
</ul>
{% endif %}
</body>
</html>

路由和视图配置

在应用目录下的urls.py中完成视图函数和应用路由的绑定;在项目目录下的urls.py中完成应用路由和根路由的绑定。

启动服务,进行访问

豆瓣接口有时候不稳定,网络请求会报400,这个时候页面显示如下:

如果豆瓣接口可以正常访问,我们可以得到如下的访问界面:

参考资料

https://coding.imooc.com/class/393.html

 

猜你喜欢

转载自blog.csdn.net/ProQianXiao/article/details/113485714