2017-10-31 3 views
2

나는 셀러리 작업을하려고, 코드는 다음과 같습니다.order_create() 정확히 2 인수 (주어진 1)

task.py

from .models import OrderItem 
from cart.cart import Cart 
from .forms import OrderCreateForm 

@task(name="create_order") 
def create_order(request): 
    cart = Cart(request) 
    if request.method == 'POST': 
     form = OrderCreateForm(request.POST) 
     if form.is_valid(): 
      order = form.save() 
      for item in cart: 
       try: 
        OrderItem.objects.create(order=order, 
              product=item['product'], 
              price=item['price'], 
              quantity=item['quantity']) 
       except: 
        pass 
       cart.clear() 
      return None 
    else: 
     form = OrderCreateForm() 
    return None 

views.py

from .models import OrderItem, Order 
from cart.cart import Cart 
from .tasks import create_order 


def order_create(request, order_id): 
    order = Order.objects.get(id=order_id) 
    cart = Cart(request) 
    create_order.delay(order.id) 
    return render(request,'orders/order_created.html', {'cart': cart, 'order': order}) 

urls.py

from .views import order_create 


urlpatterns = [ 
    url(r'^create/$',order_create, name='order_create'), 
    ] 

나는 오류가 발생하고 코드를 실행

'order_create()는 정확히 2 소요 인수 (1 주어진) '. 누군가가 나를 해결할 수 있기를 바랍니다. 고맙습니다.

다음은 주문이 생성 된 후 메일을 보내는 작업 코드이지만 전체보기 기능을 셀러리 작업으로 변경하려고합니다. URL 아래에, 당신이보기

url(r'^create/(?P<order_id>\w+)/$',order_create, name='order_create'), 

에 매개 변수로 ORDER_ID 전달하고 URL로 ORDER_ID을 통과해야 놓친에

@task(name="send_mail_to_custormer") 
def order_created(order_id): 
    order = Order.objects.get(id=order_id) 
    subject = 'Order nr. {}'.format(order.id) 
    message = 'Dear {} {},\n\nYou have successfully placed an order. Your order id is {}'.format(order.first_name, 
                 order.last_name, order.id) 
    from_email = settings.EMAIL_HOST_USER 
    to_email = [order.email] 
    mail_sent = send_mail(
          subject, 
          message, 
          from_email, 
          to_email, 
          fail_silently=False 
         ) 
    return mail_sent 

views.py

def order_create(request): 
cart = Cart(request) 
if request.method == 'POST': 
    form = OrderCreateForm(request.POST) 
    if form.is_valid(): 
     order = form.save() 
     for item in cart: 
      try: 
       OrderItem.objects.create(order=order, 
             product=item['product'], 
             price=item['price'], 
             quantity=item['quantity']) 
      except: 
       pass 
      cart.clear() 
      order_created.delay(order.id) 
     return render(request,'orders/order_created.html', {'cart': cart, 'order': order}) 
else: 
    form = OrderCreateForm() 
return render(request, 'orders/order_create.html', {'cart': cart, 'form': form}) 
+0

urls.py 파일을 볼 수 있습니까? – wpercy

+0

이것은 작업과 관련이없는 것 같습니다. 'order_create'는 뷰 자체입니다. –

답변

0

변경 URL 정의 .

+0

이 패턴은 인수가없는 'order_create'에 대한 Reverse를 throw합니다. 1 패턴 시도 : " – user6837382

+0

API 호출은 https : // domain/create/1234 /와 유사해야합니다. 1234가 order_id 인 경우, API 호출을 어떻게 작성하고 있는지 알려주실 수 있습니까? – daemon24

+0

셀러리 태스크가 메일이 생성 된 후 메일을 보내는 작동 코드가 있지만 원하는 것은 모든 뷰 기능을 셀러리 태스크로 변경하는 것입니다. – user6837382

관련 문제