2015-05-12 48 views
12

Django Rest Framework ile bir arka plan oluşturmaya çalışıyorum ve iş mantığının nereye yerleştirileceğini belirlemeye çalışıyorum. Views.py'ye gider mi? Sadece bir nesne listesi almaktan veya belirli bir nesneyi kapmaktan daha karmaşık hizmetler oluşturmak istiyorum. Herhangi bir rehberlik takdir edilecektir, teşekkürler. Genel bir Django projesinde iş mantığı hakkında bir tartışma olduğunu anlıyorum ama özellikle django dinlenme çerçevesi hakkında soru soruyorum.Django Rest Framework İş Mantığı

+1

: Burada

önerdiğim kod örnekleri şunlardır: http : //stackoverflow.com/questions/12578908/separation-of-business-logic-and-data-access-in-django – Spencer

+2

Evet ona baktım ama django dinlenme çerçevesi içindeki konum hakkında özel olarak sormayı umuyordum – perp

+0

Bunun için iyi bir Tasarım Kalıbı buldunuz mu? Teşekkürler – cyberjoac

cevap

10

Django Rest Framework'den ziyade tasarım desenleriyle ilgilidir. veri manipülasyon veya iş mantığı ile ilgili herhangi bir spesifik kod içermemesi gereken DİNLENME kullanarak arayüzleri sağlanması

  • :

    İşte bazı ipuçları.

  • MVC yaklaşımını kullanmak, uygulamanızı katlamamanız gerektiği anlamına gelmez.
  • İş mantığınızı UI'ye dokunmadan test edebilmeniz gerekir.
  • Bazı kullanıcılar modellere iş mantığı koymayı önerebilir. Ama ben onlarla aynı fikirde değilim, çünkü Django modelleri, etki alanı modelleri ve vergi hesaplaması gibi işle ilgili görevlerden farklı.
  • MVC'ye takılmadan önce, The MVC implemented in MVC three-tier architecture
  • hakkında daha fazla bilgi edinebilirsiniz Bir iş katmanı ve ilgili uygulamaların iş mantığınızı buraya koymasını öneriyorum.

MVC + three-tier diagram

Eğer kahve siparişi için REST API sağlamak istiyorum & bir online kahve dükkanı var olduğunu varsayalım.

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:

zaten bu konuda büyük bir tartışma vardır
class CoffeeShopService(object): 
     @staticmethod 
     def place_order(quantity): 
      # do the business logic here 
      return order_id 
İlgili konular