我喜欢将这种逻辑放在单独的服务层(services.py)中的方法;从Django ORM的角度来看,你呈现的数据不是一个“模型”,它不仅仅是简单的“视图”逻辑。干净的封装可确保你执行以下 *** 作:控制与支持服务的接口(即,使其看起来像Python API还是带有参数的URL),添加诸如缓存的增强功能(如@sobolevn所述),单独测试API,等等
所以我建议一个简单的
services.py,看起来像这样:
def get_books(year, author): url = 'http://api.example.com/books' params = {'year': year, 'author': author} r = requests.get(url, params=params) books = r.json() books_list = {'books':books['results']} return books_list
注意如何传递参数(使用requests软件包的功能)。
然后在
views.py:
import servicesclass BooksPage(generic.TemplateView): def get(self,request): books_list = services.get_books('2009', 'edwards') return render(request,'books.html',books_list)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)