Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2020, 22:18   #1
Evgeny_Chet
Пользователь
 
Регистрация: 20.01.2020
Сообщений: 17
По умолчанию Проект Django+python

Всем привет.
Есть задачка на создание моделей и api в django, который будет принимать json-файл и парсить его, чтобы получить доступ к данным. В программировании не искушенный, поэтому самое главное понять как и с чего начать и как подступиться...
Формат json
Код:
[
  {
    "Name of model 1": {
      "column 1": "data",
      "column 1": ["Field", "dat"]
    }
  },
  {
    "Name of model 2": {
      "column 1": "data",
    }
  },
  {
    "Name of model 3": {
      "column 1": "data",
    }
  }
]
Должно быть 3 эндпоинта
[POST] /import/ - этот эндпоинт будет получать и анализировать данные, он доступен только зарегистрированному пользователю
[GET] /detail/<nazev modelu>/ - список записей построенный на основе названия модели, эндпоинт общедоступный
[GET] /detail/<nazev modelu>/<id>/ - все данные для конкретной записи, также общедоступный

Для моделей сделать админку.
Хотелось бы вкратце чтобы обяснили начинающему. Примерно понимаю что данные должны отправиться на сервер, в нем соответственно происходит парсинг. (из файла создается лист значений и они записываются в файл)
при запросах get запрашиваются данные из файла по определенному критерию и выводятся в список.

нашел что в питоне подключается библиотека json с методами преобразования файла .json в список.
я так понимаю в models django нужно написать что будет хранить проект в базе данных (т.е данные которые отпарсируются и в каких форматах их хранить.)

не обессудьте если написал какую-то глупость
Evgeny_Chet вне форума Ответить с цитированием
Старый 20.01.2020, 23:14   #2
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

1. Олег Молчанов - создание проекта на Django - https://youtu.be/T0Xi8gWDrQ0
2. Книга Django 2.1. Практика создания веб-сайтов на Python. В. А. Дронов. Можно по содержанию почитать интересующие темы - https://codernet.ru/books/python/dja...tov_na_python/
Arkuz вне форума Ответить с цитированием
Старый 21.01.2020, 12:59   #3
Evgeny_Chet
Пользователь
 
Регистрация: 20.01.2020
Сообщений: 17
По умолчанию

Arkuz, Спасибо!!!
Супер видео. И книга на удивление достаточно современная на русском языке.
Evgeny_Chet вне форума Ответить с цитированием
Старый 23.01.2020, 04:10   #4
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Только смотреть видео и читать книгу по всей видимости неохота или нет когда. Печалька..
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 30.01.2020, 21:55   #5
Evgeny_Chet
Пользователь
 
Регистрация: 20.01.2020
Сообщений: 17
По умолчанию

Приветствую. В задаче требуется преобразовать json файл. Посмотрел в примерах. Используют модуль JSON.
Код:
import json

with open('test_data.json', 'r') as f:
    distros_dict = json.load(f)


for distro in distros_dict:
    print(distro)
данный метод преобразует json в объект питон: List. т.е массив строк
в дальнейшем требуется запрашивать данные по названию модели.
Правильно ли я понимаю что:
Для этого требуется выдирать из каждой строки название модели и данные. Заносить их в базу данных. и так проходить по каждой строке?
или я не правильно понял...
Evgeny_Chet вне форума Ответить с цитированием
Старый 30.01.2020, 22:14   #6
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
данный метод преобразует json в объект питон: List. т.е массив строк
Ваш json файл при использовании команды distros_dict = json.load(f) представится в виде Python словаря. Используя print(distro) вы неявно преобразуете к строке элемент словаря. Добавьте вот такой принт, чтобы убедиться, что тип объекта словарь print(type(distro)).

test_data.json
Код:
{
    "auto": [
    {
        "model": "mersedes",
        "color": "red"
    },
    {
        "model": "bmw",
        "color": "green"
    }
    ]
}
Код:
with open('test_data.json', 'r') as f:
    auto_dict = json.load(f)

for auto in auto_dict['auto']:
    print(f'Модель: {auto["model"]}, Цвет: {auto["color"]}')
Код:
Модель: mersedes, Цвет: red
Модель: bmw, Цвет: green
Словарь auto_dict содержит ключ "auto", значением которого является список [] словарей.
Обращаться к элементам можно так:

Код:
auto_dict["auto"][0]["model"]
auto_dict["auto"][0]["color"]
auto_dict["auto"][1]["model"]
auto_dict["auto"][1]["color"]

Последний раз редактировалось Arkuz; 30.01.2020 в 23:20.
Arkuz вне форума Ответить с цитированием
Старый 30.01.2020, 23:53   #7
Evgeny_Chet
Пользователь
 
Регистрация: 20.01.2020
Сообщений: 17
По умолчанию

Arkuz,
У меня немного другая структура json файла. Метод load преобразует файл json в объект list.
Можно ли в нем обращаться к элементам? Туплю я что-то...
Вложения
Тип файла: rar test_data.rar (1.9 Кб, 2 просмотров)
Evgeny_Chet вне форума Ответить с цитированием
Старый 30.01.2020, 23:59   #8
Evgeny_Chet
Пользователь
 
Регистрация: 20.01.2020
Сообщений: 17
По умолчанию

Я так понимаю проще будет записать весь массив строк в базу данных. А уже при обращении клиента, перебирать файл. Как-то так?
Evgeny_Chet вне форума Ответить с цитированием
Старый 31.01.2020, 11:19   #9
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
Сообщение от Evgeny_Chet Посмотреть сообщение
Arkuz,
У меня немного другая структура json файла. Метод load преобразует файл json в объект list.
Можно ли в нем обращаться к элементам? Туплю я что-то...
Чтобы вам было проще понять. В JSON [] это будет список, {} - словарь.
В вашем JSON это список словарей.
Код:
[
  {
    "AttributeName": {
      "id": 1,
      "nazev": "Barva"
    }
  },
...
Элемент списка [0], [1] ...
Получение значения ключа словаря первого элемента списка [0]["AttributeName"], [0]["AttributeName"]["id"].
Arkuz вне форума Ответить с цитированием
Старый 31.01.2020, 11:26   #10
Evgeny_Chet
Пользователь
 
Регистрация: 20.01.2020
Сообщений: 17
По умолчанию

Arkuz,
Спасибо большое. Теперь понял.
Evgeny_Chet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Django/Python разработчик milkerbell Фриланс 0 09.11.2013 03:07