从Django应用程序中,我可以从单独的Restful API中使用数据,但是过滤呢?下面返回所有书籍及其数据。但如果我只想抓取作者、日期等的书怎么办?我想传递一个作者的名称参数,例如.../authors-name或/?author=name,并只返回json响应中的参数。这可能吗?
views.py
def get_books(request):
response = requests.get('http://localhost:8090/book/list/').json()
return render(request, 'books.html', {'response':response})
那么有没有办法像模型对象一样进行过滤呢?
我能想到三种方法:
您可以编写一个函数,返回告诉您列表元素是否匹配的函数,并将生成的函数传递到filter
中。
def filter_pred_factory(**kwargs):
def predicate(item):
for key, value in kwargs.items():
if key not in item or item[key] != value:
return False
return True
return predicate
def get_books(request):
books_data = requests.get('http://localhost:8090/book/list/').json()
pred = filter_pred_factory(**request.GET)
data_filter = filter(pred, books_data)
# data_filter is cast to a list as a precaution
# because it is a filter object,
# which can only be iterated through once before it's exhausted.
filtered_data = list(data_filter)
return render(request, 'books.html', {'books': filtered_data})
from QueryableList import QueryableListDicts
def get_books(request):
books_data = requests.get('http://localhost:8090/book/list/').json()
queryable_books = QueryableListDicts(books_data)
filtered_data = queryable_books.filter(**request.GET)
return render(request, 'books.html', {'books':filtered_data})
from query_filter import q_filter, q_items
def get_books(request):
books_data = requests.get('http://localhost:8090/book/list/').json()
data_filter = q_filter(books_data, q_items(**request.GET))
# filtered_data is cast to a list as a precaution
# because q_filter returns a filter object,
# which can only be iterated through once before it's exhausted.
filtered_data = list(data_filter)
return render(request, 'books.html', {'books': filtered_data})
问题内容: 我已经在Django中创建了一个不错的数据库,并且希望通过网站内容之外的一些python脚本进行交互,因此我很好奇是否可以在Django之外使用Django数据库API网站,如果有的话,有没有人知道如何实现此目的?Google并没有为此带来很多成功。 问题答案: 在进行任何调用(包括导入模型)之前,你只需要配置Django设置即可。像这样: 同样,请确保在运行之前运行该代码,例如: 然
但请求呢?和是用户的属性,但应将它们发送到endpoint。如果我将资源发送到endpoint,则没有多大意义。 对此有没有办法,遵循JSONAPI并保持API的意义?
问题内容: 在我的视图函数中,我想调用另一个视图并将数据传递给它: ,其中backend是registration.backends对象,而form.cleaned_data是表单数据的字典(但必须同时以 args或* kwargs发送,以防止引发错误)。根据我在文档中找到的内容: 看来我需要提供“ some-view-name”参数,但这仅仅是视图函数的名称还是url的名称?因此,我想使其与在d
上一节我们主要介绍了 Django 中 Form 类的相关属性和方法,本小节中会继续介绍 Field 类的相关属性与方法,最后还有如何实现自定义的 Field。 1. Field 相关基础 1.1 Field 的 clean() 方法 通过上面两个例子演示,我们对 Django 中的表单应该有了初步的了解。对于 Form 类,最重要的就是定义它的字段(Field),且每个字段都有自定义验证逻辑以及
jsonapi 是 Django 框架中连接数据交换格式(JSON)API 的开发包。
问题内容: 我在Django中使用以下模型构建了一个问答类型的网站: 我需要显示一个特定的问题及其答案。通常,我需要2个查询才能做到这一点: 我希望使用一个查询来检索所有内容。在MySQL中,它将是: 无论如何,我可以通过Django的ORM做到这一点吗?extra()在这种情况下会有所帮助吗? 问题答案: 这正是select_related()所做的。唯一的问题是必须从Answer模型而不是Qu