2017-08-08 8 views
2

私はDjangoフレームワークを初めて使い、ビュー機能とそれが受け付ける引数にいくつかの問題があります。Djangoはビュー関数のslugとidの違いをどのように理解していますか?

  1. がどのようにDjangoはナメクジではなくIDでこの関数に渡されることcategory_slugを理解しない:

    def product-list(request, category_slug=None): 
    categories = Category.objects.all() 
    products = Product.objects.filter(not-finished=True) 
    if category_slug: 
        category = get_object_or_404(Category, slug=category_slug) 
        products = products.filter(category=category) 
    

    私の問題があることである: はたとえば、次のビュー機能を検討しますか?

  2. def product-list(request, id, category_slug):のような3つの引数があった場合、2番目の引数はidで、最後の引数はスラッグであることがわかります。

ありがとうございました。

答えて

2

ビュー自体には設定されていません。渡される値は、ビューのルートを設定するurls.pyモジュールで定義されています。

ビューに渡される値がIDまたはスラッグである場合、Djangoは「認識」しません。その値を推測したり、値を理解しようとすることはありません。適切な値を適切なビューに送信するには、ルートを正しく設定する必要があります(urls.py)。

+0

ご協力いただきありがとうございます。 –

+0

しかし私はまだ少し問題があります。上記のコードでは、category_slug:どうすれば動作しますか? –

+0

category_slugが 'None'や空文字列' '' 'のような何かfalseの場合、if文の本文は入力されません。この変数はカテゴリ別に商品リストビューをフィルタリングするために使用されています。 – wim

関連する問題