慕课网-Django入门到进阶-更适合Python小白的系统课程-第2章Django中的路由与视图-2.7可选观看:项目练习_url与views
第2章 Django中的路由与视图
2.7 可选观看:项目练习 _url 与 views
练习项目:simple api server
什么是 API 接口服务器
1.API 接口是一些预先定义的函数,每个接口对一类资源(Restful)或者说对接一项功能,通过服务器的形式承载起来
2.前后端分离,html、js、css 不在接口服务器中存在
API 服务器常用的传输数据类型
目前使用 json 格式比较流行
项目
创建中转接口服务器,通过访问我们的中转接口服务器,获取到豆瓣开源的音乐、电影、数据信息。
项目基础架构

所用知识点
1.Django2 中 url 和 views 模块
2.Requests http 模块的使用
3.初探 restful 规范写法
创建项目
django-admin startproject simple_api_server_test cd simple_api_server_test python manage.py startapp get_by_douban
安装 requests
pip install requests
实例
1.进入项目下目录 simple_api_server_test,修改文件 settings.py,修改编码、时区和注册应用
#注册应用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'simple_api_server_test',
]
#修改编码
LANGUAGE_CODE = 'zh-hans'
#修改时区
2.进入项目下目录 get_by_douban,添加文件 urls.py,添加应用的路由
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from django.urls import path
from .views import Music,Movie,Book
urlpatterns = [
path('music', Music.as_view(), name=''),
path('movie', Movie.as_view(), name=''),
path('book', Book.as_view(), name=''),
]
3.进入项目下目录 simple_api_server_test,修改文件 urls.py,添加 app 应用的路由
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""simple_api_server_test URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path,include
from get_by_douban import urls as douban_urls
urlpatterns = [
path('admin/', admin.site.urls),
path('', include(douban_urls))
]
4.进入项目下目录 get_by_douban,修改文件 views.py,添加一个电影类、音乐类、图书类
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
from django.views.generic import View
from django.http import JsonResponse
# Create your views here.
class Music(View):
DOUBAN_MUSIC_API = 'https://api.douban.com/v2/music/search?q={0}'
def get(self, request):
music_name = request.GET.get('musicname', '')
if not music_name:
return JsonResponse({'errcode':-1, 'errmsg':'音乐名称不能为空'})
url = self.DOUBAN_MUSIC_API.format(music_name)
response = requests.get(url)
data = response.json()
return JsonResponse({'errcode':0, 'errmsg':'成功', 'data':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})
5.思考,三个类内容代码类似,如何整合成一个
6.通过 ipython 测试豆瓣接口是否有效
posted on 2020-01-15 05:17 herisson_pan 阅读(10) 评论(0) 收藏 举报
浙公网安备 33010602011771号