Django Rest API из базы данных
У меня есть 2 API из моего существующего проекта. Один предоставляет последние записи в блоге, а другой - детали сортировки. Второй API (сортировка) предоставляет ID постов блога и порядковый номер, который должен быть в 1-ой, 2-ой, 3-ей...n-ой позиции. Если я отфильтрую в первом API с заданным ID, я смогу получить подробную информацию о блоге.
Как я могу создать Django REST API из базы данных? Или API, объединяющий эти 2 API? Любой учебник или ссылка, которые могут мне помочь?
Frist API Response:
{
"count": 74,
"next": "https://cms.example.com/api/v2/stories/?page=2",
"previous": null,
"results": [
{
"id": 111,
"meta": {
"type": "blog.CreateStory",
"seo_title": "",
"search_description": "",
"first_published_at": "2022-10-09T07:29:17.029746Z"
},
"title": "A Test Blog Post"
},
{
"id": 105,
"meta": {
"type": "blog.CreateStory",
"seo_title": "",
"search_description": "",
"first_published_at": "2022-10-08T04:45:32.165072Z"
},
"title": "Blog Story 2"
},
2-й ответ API
[
{
"featured_item": 1,
"sort_order": 0,
"featured_page": 105
},
{
"featured_item": 1,
"sort_order": 1,
"featured_page": 90
},
Здесь я хочу создать другой API, который будет предоставлять больше деталей о сортировке, например, он будет сортировать так https://cms.example.com/api/v2/stories/105
и ловить Title, Image & Excerpt
, и если нет данных из деталей сортировки, он будет показывать ответ первого API по умолчанию
После поиска я нашел, что вы можете сделать API из базы данных. В настройке вам нужно установить учетные данные базы данных, а затем создать класс внутри вашего models.py
и внутри мета класса вам нужно установить мета имя db_table
, а затем создать serializers.py
и views.py
, как вы создаете REST API.
class SortAPI(models.Model):
featured_item_id = models.IntegerField()
sort_order = models.IntegerField()
title=models.TextField()
first_published_at=models.DateTimeField()
alternative_title= models.TextField()
excerpt=models.TextField()
sub_heading=models.TextField()
news_slug=models.TextField()
img_title=models.TextField()
img_url=models.TextField()
img_width=models.IntegerField()
img_height=models.IntegerField()
class Meta:
db_table = 'view_featured'