python - Django 中未调用 View 函数

标签 python django

这是 view.py。 show_checkout 被调用并一路运行以返回 HttpResponseRedirect('/receipt/'),但由于某种原因,receipt View 不可见被解雇。所有打印语句都不起作用:

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))

这是结账网址:

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

最佳答案

在主 urls.py 中,不要在正则表达式中使用“$”。这似乎已经为我解决了。

关于python - Django 中未调用 View 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8783569/

相关文章:

python - 如何访问 Python 3 中重新引发的异常?

python - 如何在 Visual Studio Code 中的当前文件目录中运行 python interactive?

python - 当我们打开子框架时如何隐藏主框架

django - 在 Django Rest Framework API 中设置 cookie

python - 清除 Django 中的特定缓存

python - 为什么使用 "is"运算符比较 True/False 不好?

python - 使用字典理解python删除多个关键项目

python - django url 中两个或两个以上可选参数

python - Windows XP 中的 django startproject 异常

python - 我可以把Django模板中的字符串剪掉吗?