我正在尝试测试如何在Django项目的视图中显示API信息。我知道您可能必须将一些已安装的API添加到INSTALLED APPS设置块中。
此api是一个简单的地理位置。
我是Django的新手,也是第一次使用Django中的API。我已经使用Youtube视频设法按照自己的方式获取了我的应用。但是现在我自己一个人。我有许多不同的视图类来显示我的应用程序的不同之处。
下面的视图是要放置数据的视图。
这是我可能会这样做的方式吗?然后在HTHL中调用{{base}}进行显示?
class PostDetailView(DetailView):
model = Post
template_name = 'clients/post_detail.html'
def api_test(request):
# This is where the APIs are going to go.
requests.get('https://api.coindesk.com/v1/bpi/currentprice.json')
data = response.json()
return render(request, 'clients/post_detail.html', {
'base': data['disclaimer']
})
我目前在我的应用程序中没有收到任何错误,但是没有显示country元素。
我已经在一个简单的python文件中测试了以下内容
import requests
import json
response = requests.get('https://api.coindesk.com/v1/bpi/currentprice.json')
data = response.json()
print(data['disclaimer'])
将获得所需的结果。所以我想现在我的问题是...如何将其导入HTML?这样我就可以显示API的结果
答案 0 :(得分:1)
您可以这样写:
class PostDetailView(DetailView):
model = Post
template_name = 'clients/post_detail.html'
def call_geo_api(self):
# This is where the APIs are going to go.
response = requests.get('https://api.coindesk.com/v1/bpi/currentprice.json')
data = response.json()
return data['disclaimer']
def get_context_data(self, *args, **kwargs):
context = super(PostDetailView, self).get_context_data(*args, **kwargs)
context['base'] = self.call_geo_api()
return context
在这里,我重写了get_context_data()
方法,该方法负责将上下文数据从视图发送到模板。
在这里,我更改了您的api方法,以便它将从API返回data['disclaimer']
,并在get_context_data
方法内部,将其注入了上下文。这样就可以解决问题,以便您可以使用{{ base }}
在模板中查看数据。