Warum nicht diese Logik in Ihre view
? Wie folgt aus:
# 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
Dann tun:
{% if reversed %}
do somthing
{% endif %}
Auf der anderen Seite, wenn Sie immer noch diese Art von Logik in der Vorlage tun wollen, dann sollten Sie Ihre own filter wie folgt erstellen:
from django import template
register = template.Library()
def is_in_dict(d, key):
return key in d
und verwenden sie es wie folgt aus:
{% load my_filters %}
{% if request.GET|is_in_dict:"reverse" %}
do somthing
{% endif %}
Wie funktioniert das mit generischen Ansichten? (Ich verwende eine ListView.) Hinzufügen einer Variablen "umgekehrt" zum Kontext? – Asqiir
Der Wert von "reversed" in diesem Fall wäre falsch, da es eine leere Zeichenfolge ist, auch wenn der Schlüssel existiert. Es wäre besser, etwas wie folgt zu verwenden: 'reversed = 'reverse' in request.GET' –
@Asqiir Antworten auf diese Frage erläutert, wie dies mit einer klassenbasierten Ansicht zu tun ist. http://stackoverflow.com/questions/15754122/url-parameters-and-logic-in-django-class-based-views-templateview –