我想在我的views.py中创建一个变量,该变量根据所使用的urlpattern的名称而变化

时间:2016-10-18 13:07:42

标签: python django django-views

这是我的代码。无论选择什么urlpattern:我希望它的名称在views.py中存储为url。然后在queryset filter()中使用它。

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

)

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我会用这样的东西替换你的url.py:

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

这会将您的地址更改为url参数,然后您可以在此方法中访问该参数:

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

答案 1 :(得分:0)

您可以使用它来获取视图的名称

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

更新:添加&#34; self。&#34;使用通用视图时需要它。并且不要忘记导入:

 from django.core.urlresolvers import resolve