Sto cercando di creare un backend con Django Rest Framework e sto cercando di determinare dove posizionare la logica di business. Andrebbe nel views.py? Mi piacerebbe creare servizi più complessi di un semplice elenco di oggetti o di un oggetto specifico. Qualsiasi consiglio sarebbe apprezzato, grazie. Mi rendo conto che c'è una discussione sulla logica di business in un progetto Django generico, ma mi sto chiedendo in particolare riguardo al framework per il riposo di Django.Logica di business di Django Rest Framework
12
A
risposta
10
Si tratta più di schemi di progettazione che di Django Rest Framework.
ecco alcuni suggerimenti:
- Fornire interfacce utilizzando REST non dovrebbe comportare alcun codice specifico relativo alla manipolazione di dati o la logica di business.
- L'utilizzo di un approccio MVC non significa che non si debba sovrapporre l'applicazione.
- Dovresti essere in grado di testare la tua logica aziendale senza toccare l'interfaccia utente.
- Alcune persone possono suggerire di inserire la logica di business nei modelli. Ma io non sono d'accordo con loro, dal momento che i modelli di Django sono diversi da modelli di dominio e attività correlate al business come il calcolo delle tasse.
- Prima di rimanere bloccati in MVC, si può leggere di più su The MVC implemented in MVC three-tier architecture
- Suggerisco di avere un livello aziendale e applicazioni correlate mettendo la vostra logica aziendale lì.
Supponiamo di avere un negozio di caffè in linea & desideri fornire un'API REST per ordinare caffè.
Qui sono i miei esempi di codice suggerito:
frontend/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')
frontend/services.py:
class CoffeeShopService(object):
@staticmethod
def place_order(quantity):
# do the business logic here
return order_id
Esiste già una grande discussione su questo: http : //stackoverflow.com/questions/12578908/separation-of-business-logic-and-data-access-in-django – Spencer
Sì, ho guardato a quello, ma speravo di chiedere in particolare la posizione all'interno di Django rest framework – perp
Hai trovato un buon Design Pattern per questo? Grazie – cyberjoac