[英]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.