Задать вопрос
@plx49638

Как правильно построить архитектуру проекта в django rest framework?

что можно посмотреть или почитать что бы научиться строить правильную архитектуру проекта в django rest framework?

Например я не понимаю как правильнее сделать такой момент.

У меня есть есть один из внешний классов на который приходит API запрос. С параметрами для создания нового поста на сайте.

class CreatePost(APIView):
    permission_classes  = (IsAuthenticated,)
    def post(self, request):
         # выполняем создание поста

В request я получаю много всяких параметров и обработать их всех в одном классе - такая такая себе идя. Мне приходит не только заголовок поста и его тело, но так-же различные данные автора поста например с кого ip, а по ip я определю страну отправителя поста через сторонние сервисы. Так-же помимо постов люди отправляют и другие запросы на сайт и там тоже передается ip и так-же нужно определить страну.

Следовательно что бы не дублировать код определение страны нужно сделать отдельным классом.

class InfoIP():
    def get_country(self, ip):
         # передаем ip и  выполняем   поиск страны


Вот тут у меня возникают вопросы как правильнее сделать.
1) Наследовать CreatePost от InfoIP и в CreatePost вызывать метод get_country
2) Создать экземпляр класса InfoIP в методе post клсаа CreatePost и затем вызывать методы InfoIP
3) Как правильнее передать request.user в InfoIP ? объявить переменную auth_user в классе InfoIP и присвоить ей значение или правильнее просто в метод передать get_country(self, request.user ) или лучше в метод передать полностью get_country(self, request)
4) или все 3 варианта не правильные и нужно как то иначе строить это все.

Дайте пожалуйста дельный совет, что можно реально толкового изучить по вопросу архитектуры?
И так-же интересно было бы почитать ваши подходы к реализации такой вроде бы просто задачи.
  • Вопрос задан
  • 127 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@Realmixer
Full stack Python (Django) web-developer
Используйте ModelSerializer для моделей и ViewSet для действий над ними.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы