2016-06-29 14 views
2

私は本当にDjangoのURLに引数とkeword引数をディスパッチする方法を理解するのは難しい時があります。Djangoは引数を取っていませんURLを

私は、一般的なベース・ビュー使用してビューをしました:私は"localhost:8000/cart/?item=4&qty=200"のようなURLにaurgumentsで作業することができた以上の観点から

​​

をして、それは、端末の数量でアイテムを印刷しますケーススタディは、次のとおり。

できるだけ早く私のようなコードの変更作られました:それは私にエラーを示し"localhost:8000/cart/?item=4&qty=200"のように引数を渡すのと同じ方法で

from carts.models import Cart, CartItem 
from products.models import Variation 


class CartView(View): 
    def get(self, request, *args, **kwargs): 
     item_id = request.GET.get('item') 
     if item_id: 
      item_instance = get_object_or_404(Variation, id=item_id) 
      qty = request.GET.get('qty') 
      cart = Cart.objects.all()[0] 
      cart_item = CartItem.objects.get_or_create(cart=cart, item=item_instance)[0] 
      cart_item.quantity = qty 
      cart_item.save() 
      print cart_item 
     return HttpResponseRedirect('/') 

を:

404 Page Not Found No Variation matches the given query.

urls.py

urlpatterns = [ 
    url(r'^home/$', 'newsletter.views.home', name='home'), 
    url(r'^contact/$', 'newsletter.views.contact', name='contact'), 
    url(r'^about/$', 'project.views.about', name='about'), 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^accounts/', include('registration.backends.default.urls')), 
    url(r'^cart/$', CartView.as_view(), name='cart'), 
    url(r'^', include('products.urls')), 
    url(r'^categories/', include('products.urls_categories')), 
+0

[Djangoの{%url%}テンプレートタグを使用してクエリパラメータを渡すことはできますか?](http://stackoverflow.com/questions/4591525/is-it-possible-to-pass-query- parameters-via-djangos-url-template-tag) – Sayse

+2

ID 4 –

+0

のVariationオブジェクトがないので、バリエーションオブジェクトを持つ偶数のプロダクトで引数を渡しました。同じ問題。次に、デフォルトのバリエーションを持つすべての製品をカートでよりうまく処理できるようにpost_save信号を作成しました。今、私はバリエーションにカートを実装するだけです。 –

答えて

2

404 Page Not Found

No Variation matches the given query.

このメッセージは、あなたの行から来ている:

item_instance = get_object_or_404(Variation, id=item_id) 

そして、あなたが与えられたidに一致するVariationオブジェクトを持っていないことを意味します。

関連する問題