Skip to content

Instantly share code, notes, and snippets.

@kianurivzzz
Created September 13, 2024 18:34
Show Gist options
  • Save kianurivzzz/37aaf6d83f3c0c1c144b3aad05285eea to your computer and use it in GitHub Desktop.
Save kianurivzzz/37aaf6d83f3c0c1c144b3aad05285eea to your computer and use it in GitHub Desktop.
from flask import Flask, jsonify
from data import generate_companies
companies = generate_companies(100)
app = Flask(__name__)
@app.route('/')
def index():
return 'open something like, you can change id: /companies/5'
# Ниже можно написать код
import random
from faker import Faker
SEED = 1234
def generate_companies(companies_count):
fake = Faker()
fake.seed_instance(SEED)
ids = list(range(companies_count))
random.seed(SEED)
random.shuffle(ids)
companies = []
for i in range(companies_count):
companies.append({
'id': ids[i],
'name': fake.company(),
'phone': fake.phone_number(),
})
return companies

Чтобы выводить детальную информацию по каждому отдельному ресурсу какой-то категории, то есть студенты, курсы, уроки, используются динамические обработчики.

В этом упражнении вам нужно будет создать обработчик для вывода информации по каждой компании из списка.

app.py Реализуйте маршрут /companies/<id>, по которому отдается json представление компании. Компания извлекается из списка companies. Каждая компания представлена словарём, у которого есть числовой, то есть тип данных – число, ключ id:

Пример

# Гипотетический пример показывающий структуру
companies = [
  {
    'id': 4,
    # другие элементы словаря
  },
  {
    'id': 2,
    # другие элементы словаря
  },
  {
    'id': 8,
    # другие элементы словаря
  },
]

Если компания с таким идентификатором не существует, то сайт должен вернуть ошибку 404, страница с HTTP кодом 404, и текстом Page not found.

Подсказки Для указания статуса ответа обработчик должен возвращать кортеж, первое значение которого тело ответа, а второе значение - статус ответа. Подробнее об ответах.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment