Django get request делится на 3 ветки?

У меня есть класс списка статей (class ArticleListView(View):). В этом классе я хочу иметь 1 функцию get с 3 различными запросами. Первый используется для поиска статей Второй для возврата случайной ссылки на статью Третий возвращает список статей

Я могу сделать 2 разных запроса get (all и search), но не могу добавить третий. Возможно ли это технически и если да, то кто мне нужен для случайной страницы и какая часть моей функции get неверна? мой код : class ArticleListView(View): template_name = "wiki/article_list.html"

    def get(self, request) :
        strval =  request.GET.keys()
        if request.GET.get('search') :
            # Simple title-only search
            # objects = Post.objects.filter(title__contains=strval).select_related().order_by('-updated_at')[:10]

            # Multi-field search
            # __icontains for case-insensitive search
            query = Q(title__icontains=strval)
            query.add(Q(text__icontains=strval), Q.OR)
            article_list = Article.objects.filter(query).select_related().order_by('-updated_at')[:10]

        elif request.GET.get('random'):
            # find the number of article abject
            numberOfArticle = Article.objects.all().count()
            # find a random number from 1 to number of articles
            randomPK = random.randint(1, numberOfArticle)
            # filter article list object base on primary key ( pass that random number)
            #Item.objects.all()[0].type_id
            article_list = Article.objects.get(pk=randomPK)
        else :
            article_list = Article.objects.all().order_by('-updated_at')[:10]

        # Augment the article_list
        for obj in article_list:
            obj.natural_updated = naturaltime(obj.updated_at)

        ctx = {'article_list' : article_list, 'search': strval, 'random':strval}
        return render(request, self.template_name, ctx)

моя старая функция, которая работает для списка всех статей и поиска:

class ArticleListView(View):
    template_name = "wiki/article_list.html"

    def get(self, request) :
        strval =  request.GET.get("search", False)
        if strval :
            # Simple title-only search
            # Multi-field search
            # __icontains for case-insensitive search
            query = Q(title__icontains=strval)
            query.add(Q(text__icontains=strval), Q.OR)
            article_list = Article.objects.filter(query).select_related().order_by('-updated_at')[:10]
        else :
            article_list = Article.objects.all().order_by('-updated_at')[:10]

        # Augment the post_list
        for obj in article_list:
            obj.natural_updated = naturaltime(obj.updated_at)

        ctx = {'post_list' : article_list, 'search': strval}
        return render(request, self.template_name, ctx)

также ссылки на поиск (который является формой) и ссылка на получение всех статей на языке шаблона Django

search link :
<form>
     <input type="text" placeholder="Search.." name="search"
      {% if search %} value="{{ search }}" {% endif %}>
      <a href="{% url 'wiki:all' %}"><i class="fa fa-undo"></i></a>
</form>

Ссылка на всю статью :

<a href="{% url 'wiki:article_detail'  article.id %}">{{ article.title }}</a>
I want to click on link and get a random article link in main page.

Спасибо

Вернуться на верх