Ich habe versucht, eine Sellerie Aufgabe zu tun, der Code wie folgt.order_create() nimmt genau 2 Argumente (1 gegeben)
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'),
]
Wenn der Ausführung des Codes ich die Störung erhalte ‚order_create() nimmt genau 2 Argumente (1 gegeben). Hoffe, jemand kann mir helfen, es zu lösen. Vielen Dank.
Das Folgende ist mein Arbeitscode, der Mail sendet, nachdem eine Bestellung erstellt wurde, aber ich wollte die gesamte Ansichtsfunktion als eine Sellerieaufgabe ändern.
@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})
Können wir Ihre urls.py-Datei sehen? – wpercy
Das scheint mit der Aufgabe nichts zu tun zu haben; 'order_create' ist die Ansicht selbst. –