なぜ論理を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を使用しています。)コンテキストに逆の変数を追加しますか? – Asqiir
この場合、 'reversed'の値は、キーが存在していても空の文字列であるため、falseです。 'reverseed = 'reverse' in request.GET' –
@Asqiirこの質問の回答は、クラスベースのビューでこれを行う方法を説明しています。 http://stackoverflow.com/questions/15754122/url-parameters-and-logic-in-django-class-based-views-templateview –