Próbuję utworzyć backend z Django Rest Framework i próbuję ustalić, gdzie umieścić logikę biznesową. Czy obejrzałby plik views.py? Chciałbym tworzyć bardziej złożone usługi niż tylko uzyskiwanie listy obiektów lub chwytanie jednego konkretnego obiektu. Wszelkie wskazówki będą mile widziane, dziękuję. Zdaję sobie sprawę, że istnieje dyskusja na temat logiki biznesowej w ogólnym projekcie Django, ale ja pytam konkretnie o framework reszta django.Django Rest Framework Business Logic
12
A
Odpowiedz
10
Chodzi raczej o wzorce projektowe niż Django Rest Framework.
Oto kilka wskazówek:
- Zapewnienie interfejsów za pomocą reszta nie powinna pociągać za sobą żadnego konkretnego kodu związanego z manipulacją danych lub logiki biznesowej.
- Stosowanie podejścia MVC nie oznacza, że nie należy warstwować aplikacji.
- Powinieneś być w stanie przetestować swoją logikę biznesową bez dotykania interfejsu użytkownika w ogóle.
- Niektóre osoby mogą sugerować umieszczanie logiki biznesowej w modelach. Ale nie zgadzam się z nimi, ponieważ modele Django różnią się od modeli domenowych i zadań związanych z biznesem, takich jak obliczanie podatków.
- Zanim utkniesz w MVC, możesz przeczytać więcej o The MVC implemented in MVC three-tier architecture
- Proponuję, aby mieć warstwę biznesową i powiązane aplikacje umieszczające tam swoją logikę biznesową.
Załóżmy, że masz internetowego kawiarnia & którą chcesz zapewnić REST API do zamawiania kawy.
Oto moje sugerowane próbki kodu:
myapp/views.py:
def order(request, quantity=1):
# Process the order by calling the mapped method
order_id = CoffeeShopService.place_order(quantity)
return HttpResponse({'order_id': order_id, mimetype='application/json')
myapp/services.py:
class CoffeeShopService(object):
@staticmethod
def place_order(quantity):
# do the business logic here
return order_id
Jest już duża dyskusja na ten temat: http : //stackoverflow.com/questions/12578908/separation-of-business-logic-and-data-access-in-django – Spencer
Tak, spojrzałem na to, ale miałem nadzieję, że zapytam konkretnie o lokalizację w strukturze django rest – perp
Czy znalazłeś dobry wzór projektu dla tego? Dzięki – cyberjoac