簡體   English   中英

Django-如何將值從<a href>傳遞給視圖</a>

[英]Django - how to pass a value from <a href> to a view

我在模板中有一個類別下拉列表。 我不想對其進行硬編碼並為每個類別編寫單獨的列表視圖。 那么有沒有辦法將值從<a href="">傳遞給視圖? 我猜self.request.GET.get('category search')永遠不會起作用,因為沒有<form method="get">標記。 因此,由於return queryset.none()語句,它始終返回None

home.html:

<div class="dropdown-menu" aria-labelledby="navbarDropdown">
    {% if all_categories %}
        {% for category in all_categories %}
            <a name="category search" href="{% url 'book:category_search' category.id %}"> {{ category }} </a>
        {% endfor %}
    {% endif %}
</div>

book.urls.py:

urlpatterns = [
    .........
    path('categories/<int:pk>', views.CategorySearchView.as_view(), name='category_search'),
]

book.views.py:

class CategorySearchView(generic.ListView):

    template_name = 'book/search.html'
    model = Book
    context_object_name = 'book_list'
    paginate_by = 100

    def get_queryset(self):
        queryset = super().get_queryset()
        search = self.request.GET.get('category search')
        if search:
            queryset = Book.objects.filter(categories__id=search)
            return queryset
        else:
            return queryset.none()

由於您的網址具有<int:pk>

path('categories/<int:pk>', views.CategorySearchView.as_view(), name='category_search'),

您可以在視圖中訪問self.kwargs['pk']

def get_queryset(self):
    queryset = super().get_queryset()
    search = self.kwargs.get('pk')
    if search:
        queryset = Book.objects.filter(categories__id=search)
        return queryset
    else:
        return queryset.none()

self.request.GET如果pk在查詢字符串中,則可以使用self.request.GET ,例如/categories/?pk=1 當您使用method=GET提交表單時,表單字段將包含在querystring中。 但是,您也可以使用帶有查詢字符串的鏈接,例如<a href="/categories/?pk=1">my link</a>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM