慕课网-Django入门到进阶-更适合Python小白的系统课程-第3章Django中的Template模板-3-10可选观看:项目练习模板引擎
第3章 Django中的Template模板
3-10 可选观看:项目练习模板引擎
1.在项目 simple_api_server_test 下,新建目录 templates
2.在项目 simple_api_server_test 下目录 simple_api_server_test,修改文件 settings.py,添加模板路径
#添加模板路径
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
3.在项目 simple_api_server_test 下目录 templates,添加文件 music.html、movie.html、book.html
4.在项目 simple_api_server_test 下目录 simple_api_server_test,修改文件 urls.py,修改 music 路径
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from django.urls import path
from .views import Music,Movie,Book
urlpatterns = [
path('music/<str:musicname>', Music.as_view(), name=''),
path('movie', Movie.as_view(), name=''),
path('book', Book.as_view(), name=''),
]
5.在项目 simple_api_server_test 下目录 get_by_douban,修改文件 views.py,修改类 Music
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
from django.views.generic import View
from django.http import JsonResponse
from django.shortcuts import render
# Create your views here.
class Music(View):
TEMPLATE = 'music.html'
DOUBAN_MUSIC_API = 'https://api.douban.com/v2/music/search?q={0}'
def get(self, request, musicname):
url = self.DOUBAN_MUSIC_API.format(musicname)
response = requests.get(url)
data = response.json()
data['search_name'] = musicname
return render(request, self.TEMPLATE, context=data)
class Movie(View):
DOUBAN_MOVIE_API = 'https://api.douban.com/v2/movie/search?q={0}'
def get(self, request):
movie_name = request.GET.get('moviename', '')
if not movie_name:
return JsonResponse({'errcode': -1, 'errmsg': '电影名称不能为空'})
url = self.DOUBAN_MOVIE_API.format(movie_name)
try:
response = requests.get(url)
except Exception as e:
return JsonResponse({'errcode':-1, 'errmsg':str(e)})
if response.status_code != 200:
return JsonResponse({'errcode':-1, 'errmsg':'请求豆瓣异常'})
data = response.json()
return JsonResponse({'errcode': 0, 'errmsg': '成功', 'data': data})
class Book(View):
DOUBAN_BOOK_API = 'https://api.douban.com/v2/book/search?q={0}'
def get(self, request):
book_name = request.GET.get('bookname', '')
if not book_name:
return JsonResponse({'errcode': -1, 'errmsg': '图书名称不能为空'})
url = self.DOUBAN_BOOK_API.format(book_name)
response = requests.get(url)
data = response.json()
return JsonResponse({'errcode': 0, 'errmsg': '成功', 'data': data})
6.在项目 simple_api_server_test 下目录 templates,修改文件 music.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="referrer" content="no-referrer" />
<title>Title</title>
</head>
<body>
<h3>音乐:{{search_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}}" style="width:10%" alt="" /></a>
</li>
{% endfor %}
</ul>
</body>
</html>
7.在项目 simple_api_server_test 下目录 simple_api_server_test,修改文件 urls.py,修改 movie 路径
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from django.urls import path
from .views import Music,Movie,Book
urlpatterns = [
path('music/<str:musicname>', Music.as_view(), name=''),
path('movie/<str:moviename>', Movie.as_view(), name=''),
path('book', Book.as_view(), name=''),
]
8.在项目 simple_api_server_test 下目录 get_by_douban,修改文件 views.py,修改类 Movie
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
from django.views.generic import View
from django.http import JsonResponse
from django.shortcuts import render
# Create your views here.
class Music(View):
TEMPLATE = 'music.html'
DOUBAN_MUSIC_API = 'https://api.douban.com/v2/music/search?q={0}'
def get(self, request, musicname):
url = self.DOUBAN_MUSIC_API.format(musicname)
response = requests.get(url)
data = response.json()
data['search_name'] = musicname
return render(request, self.TEMPLATE, context=data)
class Movie(View):
TEMPLATE = 'movie.html'
DOUBAN_MOVIE_API = 'https://api.douban.com/v2/movie/search?q={0}'
def get(self, request, moviename):
url = self.DOUBAN_MOVIE_API.format(moviename)
try:
response = requests.get(url)
except Exception as e:
return JsonResponse({'errcode':-1, 'errmsg':str(e)})
if response.status_code != 200:
return JsonResponse({'errcode':-1, 'errmsg':'请求豆瓣异常'})
data = response.json()
data['search_name'] = moviename
return render(request, self.TEMPLATE, data)
class Book(View):
DOUBAN_BOOK_API = 'https://api.douban.com/v2/book/search?q={0}'
def get(self, request):
book_name = request.GET.get('bookname', '')
if not book_name:
return JsonResponse({'errcode': -1, 'errmsg': '图书名称不能为空'})
url = self.DOUBAN_BOOK_API.format(book_name)
response = requests.get(url)
data = response.json()
return JsonResponse({'errcode': 0, 'errmsg': '成功', 'data': data})
9.在项目 simple_api_server_test 下目录 templates,修改文件 movie.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="referrer" content="no-referrer" />
<title></title>
</head>
<body>
<h3>电影:{{search_name}}</h3>
<div>共{{count}}条数据</div>
<ul>
{% for video in subjects %}
<li>
<p>电影:{{video.title}};演员:{% for person in video.casts %} {{person.name}} {{endfor}}</p>
<a href="{{video.alt}}"><img src="{{video.images.small}}" style="width:10%" alt="" /></a>
</li>
{% endfor %}
</ul>
</body>
</html>
10.在项目 simple_api_server_test 下目录 simple_api_server_test,修改文件 urls.py,修改 book 路径
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from django.urls import path
from .views import Music,Movie,Book
urlpatterns = [
path('music/<str:musicname>', Music.as_view(), name=''),
path('movie/<str:moviename>', Movie.as_view(), name=''),
path('book/<str:bookname>', Book.as_view(), name=''),
]
11.在项目 simple_api_server_test 下目录 get_by_douban,修改文件 views.py,修改类 Book
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
from django.views.generic import View
from django.http import JsonResponse
from django.shortcuts import render
# Create your views here.
class Music(View):
TEMPLATE = 'music.html'
DOUBAN_MUSIC_API = 'https://api.douban.com/v2/music/search?q={0}'
def get(self, request, musicname):
url = self.DOUBAN_MUSIC_API.format(musicname)
response = requests.get(url)
data = response.json()
data['search_name'] = musicname
return render(request, self.TEMPLATE, context=data)
class Movie(View):
TEMPLATE = 'movie.html'
DOUBAN_MOVIE_API = 'https://api.douban.com/v2/movie/search?q={0}'
def get(self, request, moviename):
url = self.DOUBAN_MOVIE_API.format(moviename)
try:
response = requests.get(url)
except Exception as e:
return JsonResponse({'errcode':-1, 'errmsg':str(e)})
if response.status_code != 200:
return JsonResponse({'errcode':-1, 'errmsg':'请求豆瓣异常'})
data = response.json()
data['search_name'] = moviename
return render(request, self.TEMPLATE, data)
class Book(View):
TEMPLATE = "book.html"
DOUBAN_BOOK_API = 'https://api.douban.com/v2/book/search?q={0}'
def get(self, request, bookname):
url = self.DOUBAN_BOOK_API.format(bookname)
response = requests.get(url)
data = response.json()
data["search_name"] = bookname
return render(request, self.TEMPLATE, data)
12.在项目 simple_api_server_test 下目录 templates,修改文件 book.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="referrer" content="no-referrer" />
<title>Title</title>
</head>
<body>
<h3>书籍:{{search_name}}</h3>
<div>共{{count}}条数据</div>
<ul>
{% for book in books %}
<li>
<p>书名:{{book.title}};作者:{% for person in book.author %} {{person.name}} {{endfor}};出版日期:{{book.pubdate}};共{{book.pages}}页;</p>
<p>价格:{{book.price}}</p>
<p>作者介绍:{{book.author_intro}}</p>
<a href="{{book.alt}}"><img src="{{book.image}}" style="width:10%" alt="" /></a>
</li>
{% endfor %}
</ul>
</body>
</html>
posted on 2020-01-26 12:38 herisson_pan 阅读(13) 评论(0) 收藏 举报
浙公网安备 33010602011771号