这是view.py. show_checkout
被调用并一直运行到return HttpResponseRedirect('/receipt/')
,但由于某种原因,receipt
视图未被解雇。没有打印报表的工作是:未在Django中调用查看函数
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.core import urlresolvers
from django.http import HttpResponseRedirect
from ecomstore.checkout.forms import CheckoutForm
from ecomstore.checkout.models import Order, OrderItem
from ecomstore.checkout import checkout
from ecomstore.cart import cart
from django.core.context_processors import csrf
# Create your views here.
def show_checkout(request, template_name='checkout/checkout.html'):
c = {}
c.update(csrf(request))
if cart.is_empty(request):
cart_url = urlresolvers.reverse('show_cart')
return HttpResponseRedirect(cart_url)
if request.method == 'POST':
postdata = request.POST.copy()
form = CheckoutForm(postdata)
if form.is_valid():
response = checkout.process(request)
order_number = response.get('order_number',0)
print 'this is the order number: ' + str(order_number)
error_message = response.get('message','')
if order_number:
request.session['order_number'] = order_number
# receipt_url = urlresolvers.reverse('checkout_receipt')
print request.session['order_number']
return HttpResponseRedirect('/receipt/')
else:
error_message = 'Correct the errors below'
else:
form = CheckoutForm()
page_title = 'Checkout'
return render_to_response(template_name, locals(), context_instance= RequestContext(request))
##Currently this doesn't seem to be running
def receipt(request, template_name='checkout/receipt.html'):
order_number = request.session.get('order_number','')
print 'this is receipt order number: ' + str(order_number)
if order_number:
print 'in order_number'
order = Order.objects.filter(id=order_number)[0]
order_items = OrderItem.objects.filter(order=order)
del request.session['order_number']
else:
print 'not in order number'
cart_url = urlresolvers.reverse('show_cart')
return HttpResponseRedirect(cart_url)
return render_to_response(template_name, locals(), context_instance=RequestContext(request))
这里是checkout.urls:
from django.conf.urls.defaults import *
from ecomstore import settings
urlpatterns = patterns('ecomstore.checkout.views',
(r'^$','show_checkout',{'template_name':'checkout/checkout.html','SSL':settings.ENABLE_SSL},'checkout'),
(r'^receipt/$','receipt',{'template_name':'checkout/receipt.html','SSL':settings.ENABLE_SSL},'checkout_receipt'),
)
和urls.py:
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'ecomstore.views.home', name='home'),
# url(r'^ecomstore/', include('ecomstore.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
(r'^', include('catalog.urls')),
(r'^cart/$', include('cart.urls')),
(r'^checkout/$', include('checkout.urls')),
(r'^receipt/$', include('checkout.urls')),
)
重要信息:另它目前被转发到localhost/cart
呃,这是有道理的。你会碰巧知道为什么我不能在这里使用'reverse()'? – locoboy 2012-01-09 05:32:43
只要条目具有名称,您应该可以。 (反向工作在我发布的代码的测试副本上) – Naddiseo 2012-01-10 01:50:30