2016-10-18 11 views
0

ここに私のコードです。どのurlpatternが選択されても、それの名前はurlとしてviews.pyに保存されます。クエリセットフィルタ()で使用されます。使用しているurlパターンの名前に応じて、私のviews.pyの変数を変更したい

urls.py

url(r'^news/', BoxesView.as_view(), name='news'), 
url(r'^sport/', BoxesView.as_view(), name='sport'), 
url(r'^cars/', BoxesView.as_view(), name='cars'), 

views.py

class BoxesView(ListView): 
    url = #urlname to go here 
    def get_queryset(self): 
     queryset_list = Post.objects.all().filter(category=url) 

models.py

category = models.CharField(choices=CATEGORY_CHOICES) 

choices.py

CATEGORY_CHOICES = (
    ('1', 'news'), 
    ('2', 'sport'), 
    ('3', 'cars'), 

) 

答えて

1

私はこのようなもので、あなたのurl.pyを置き換えます:

def get_queryset(self): 
      url = self.kwargs['keyword'] 
      queryset_list = Post.objects.all().filter(category=url) 
0

url(r'(?P<keyword>\w+)/$', BoxesView.as_view()) 

をこれは、あなたがこのようなあなたの方法でアクセスできるURLパラメータにあなたのアドレスを変更これを使用してビューの名前を取得することができます。

url = resolve(self.request.path_info).url_name 

UPDATE: "自己"を追加しました。これは汎用ビューを使用する場合に必要です。インポートを忘れないでください:

from django.core.urlresolvers import resolve 
関連する問題