相关疑难解决方法(0)

在django中使用RESTFUL API中的数据的正确方法

我正在尝试学习django,所以当我有一个当前的解决方案时,我不确定它是否遵循django中的最佳实践.我想在我的网站上显示来自网络API的信息.假设api url如下:

http://api.example.com/books?author=edwards&year=2009
Run Code Online (Sandbox Code Playgroud)

Thsis将返回Edwards于2009年撰写的书籍清单.返回以下格式:

{'results':
             [
                {
                   'title':'Book 1',
                   'Author':'Edwards Man',
                   'Year':2009
                },
                {
                   'title':'Book 2',
                   'Author':'Edwards Man',
                   'Year':2009}
           ]
}
Run Code Online (Sandbox Code Playgroud)

目前我正在使用我的视图文件中的API,如下所示:

class BooksPage(generic.TemplateView):
    def get(self,request):
        r = requests.get('http://api.example.com/books?author=edwards&year=2009')
        books = r.json()
        books_list = {'books':books['results']}
        return render(request,'books.html',books_list)
Run Code Online (Sandbox Code Playgroud)

通常,我们从models.py文件中的数据库中获取数据,但我不确定是否应该在models.py或views.py中获取此API数据.如果它应该在models.py中,有人可以举例说明如何做到这一点吗?我特意为stackoverflow编写了上面的例子,所以任何bug都纯粹是在这里编写它的结果.

python django rest restful-architecture

56
推荐指数
1
解决办法
4万
查看次数

将会话从模板视图传递给python请求api调用

我想使用请求库从我的Django TemplateView进行多个内部REST API调用.现在我想将会话也从模板视图传递到api调用.建议的方法是什么,记住性能.

现在,我正在模板视图中cookie从当前request对象中提取,并将其传递给requests.get()requests.post()调用.但问题是,我必须将request对象传递给我的API客户端,这是我不想要的.

这是我用来路由我的请求的当前包装器:

def wrap_internal_api_call(request, requests_api, uri, data=None, params=None, cookies=None, is_json=False, files=None):
    headers = {'referer': request.META.get('HTTP_REFERER')}
    logger.debug('Request API: %s calling URL: %s', requests_api, uri)
    logger.debug('Referer header sent with requests: %s', headers['referer'])
    if cookies:
        csrf_token = cookies.get('csrftoken', None)
    else:
        csrf_token = request.COOKIES.get('csrftoken', None)

    if csrf_token:
        headers['X-CSRFToken'] = csrf_token
    if data:
        if is_json:
            return requests_api(uri, json=data, params=params, cookies=cookies if cookies else request.COOKIES, headers=headers)
        elif not files:
            return requests_api(uri, data=data, params=params, …
Run Code Online (Sandbox Code Playgroud)

python django

7
推荐指数
1
解决办法
1305
查看次数

从django视图调用REST API

有没有办法从django视图进行RESTful api调用?

我试图从django视图传递URL和参数.我在半小时内谷歌搜索,但找不到任何有趣的东西.

任何帮助,将不胜感激

python django rest

6
推荐指数
1
解决办法
1万
查看次数

Django - 使用从类似REST的API检索的数据构建报告的应用程序

我一直在构建一个Django应用程序,它使用来自类似REST的API的数据.API是使用.NET构建的(yuck!不是我的选择),因为我宁愿挖出我的眼球而不是学习Microsoft工具(我是*nix/OSX人),因为我不想要前端为了影响API,反之亦然,我选择在另一台服务器上使用Django构建前端.

Django站点充当主DB/API和最终用户之间的中间人.来自API的数据都没有保存在Django站点中,它只是以一种很好的人类可读格式重新格式化/显示所述数据.现在我已经构建了我的API客户端和我的所有视图,我希望创建一个报表生成器.

是否有任何可以创建Transitory Models来代表API调用对象的应用程序?我希望能够创建从API接收的JSON/XML数据之间的关系,但不需要复制我的Django站点中的DB结构,这将是多余的.

最终目标是能够让用户根据来自数据API的请求创建/保存自定义过滤报告.任何建议将不胜感激.(请不要回复"只是在Django中复制模型,并插入从API中检索的数据".这完全会使DB/API在与前端不同的服务器上运行完全无效.

注意 - 我已经看过neithere的Dark,但由于缺少文档,并且缺少关于'docu'库的文档,我真的不知道它对我有什么好处.如果你有任何如何使用它们来解决这个问题的例子,请告诉:)

python django rest json django-models

6
推荐指数
1
解决办法
1421
查看次数