0
的網址:myurl/?page=1&reverse
使用的QueryDict項目的if語句
現在我想在模板是否reverse
檢查是在那裏:
{% if request.GET.reverse %}
do somthing
{% endif %}
但if
之間什麼在和endif
從未發生過!
我應該用什麼來代替request.GET.reverse
?
的網址:myurl/?page=1&reverse
使用的QueryDict項目的if語句
現在我想在模板是否reverse
檢查是在那裏:
{% if request.GET.reverse %}
do somthing
{% endif %}
但if
之間什麼在和endif
從未發生過!
我應該用什麼來代替request.GET.reverse
?
爲什麼不把這個邏輯放在你的view
裏面?就像這樣:
# Function Based View (FBV)
def my_view(request):
reversed = request.GET.get('reverse', '')
return render(request, 'template.html', locals())
# Class Based View (CBV)
class MyView(ListView):
template_name = 'path/to/template.html'
queryset = MyModel.objects.filter(...)
context_object_name = 'my_obj'
def get_context_data(self, **kwargs):
context = super(MyView, self).get_context_data(**kwargs)
context['reversed'] = self.request.GET.get('reverse', '')
return context
然後做:
{% if reversed %}
do somthing
{% endif %}
在另一方面,如果你還願意做這樣的邏輯在你的模板,那麼你應該創建own filter這樣的:
from django import template
register = template.Library()
def is_in_dict(d, key):
return key in d
,並使用它像這樣:
{% load my_filters %}
{% if request.GET|is_in_dict:"reverse" %}
do somthing
{% endif %}
這對於泛型視圖是如何工作的? (我正在使用ListView。)向上下文添加一個變量'reversed'? – Asqiir
在這種情況下,'reversed'的值將是錯誤的,因爲它是一個空字符串,即使密鑰存在。最好是使用這樣的東西:'reverse ='reverse'request.GET' –
@Asqiir這個問題的答案解釋瞭如何使用基於類的視圖來做到這一點。 http://stackoverflow.com/questions/15754122/url-parameters-and-logic-in-django-class-based-views-templateview –