0

私には 2 つのビューがあります。

def create_order(request,id):
    orders = Order()
    orders.restaurant = Restaurant.objects.get(pk=id)
    orders.save()

    if orders.pk:
        ....
    return orders

2 番目のビューが最初のビューを呼び出し、

def show_checkout(request,id):
    if order.is_empty(request):
        ...
    if request.method == 'POST':
        restaurant = Restaurant.objects.get(pk=id)
        form = forms.CheckoutForm(request.POST,instance=restaurant)
        if form.is_valid():
            order_created = create_order(request,restaurant)
            .......
    return render_to_response('checkout/checkout.html',context,context_instance=RequestContext(request))

これを実行するとエラーが発生します `

show_checkout() は正確に 2 つの引数を取ります (1 つ指定)` My Traceback,

Traceback:
File "/home/matsinvasion/projects/f4l/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)

Exception Type: TypeError at /orders/checkout/
Exception Value: show_checkout() takes exactly 2 arguments (1 given)

私はこれについて行き、引数の扱いについてよく読んでいただければ幸いです

from .views import show_item, show_order,get_category,homepage,show_checkout,reciept
from f4l import settings
from django.conf.urls.defaults import patterns, include, url


urlpatterns = patterns('',
    url(r'^$',homepage,name="homepage"),
    url(r'^menu/(\d+)$',get_category, name="f4l_menu"),
    url(r'^your_order/$',show_order,name="order_index"),
    url(r'^item/(?P<id>\w+)/$',show_item, name="item_order"),
    url(r'^checkout/$',show_checkout,name="checkout"),
    url(r'^reciept/$',reciept,name="checkout_reciept"),
)

urls.py を修正するNoReverseMatch errorと、この関数で発生します。

Reverse for 'checkout' with arguments '()' and keyword arguments '{}' not found.
    def get_checkout_url(request):
        return urlresolvers.reverse('checkout')
4

1 に答える 1

1

ビューは、URLで考慮されていないshow_checkout2番目のパラメーターを取ります。id

次のようにURLに追加する必要があります。

url(r'^checkout/(?P<checkout_id>[\w|\W]+)$',show_checkout,name="checkout"),

また、テンプレートでURLを呼び出すときは、次idのようにビューで要求しているURLを渡す必要があります。

{% url checkout checkout.id %}

または、Django 1.5を使用している場合:

{% url 'checkout' checkout.id %}
于 2013-03-07T21:31:46.377 に答える