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 –