Filtreyi Korumak
Coddy'nin Django Journey'sinin Sınıf Tabanlı Görünümler bölümünün bir parçası. Ders 9 / 18.
Berlin'deki iş ilanlarını açın ve İleri'ye basın: 2. sayfada her şehirden iş ilanları listelenir. Bağlantı ?page=2; tamamen yeni bir sorgu dizesidir, bu yüzden city=Berlin kaybolur.
{% querystring %} etiketi mevcut sorgu dizesinden başlar, belirttiğiniz değerleri ayarlar ve sonucu ? dahil yazar. Django 5.1'den beri yerleşik olduğundan {% load %} gerektirmez. Mutfağa göre filtrelenmiş bir tarif listesi, sıralanmış bir görünüme bağlantı verir:
<a href="{% querystring sort="minutes" %}">Quickest first</a>/recipes/?cuisine=thai adresinde bu, ?cuisine=thai&sort=minutes yazar: filtre korunur. Değer bir şablon değişkeni olabilir ve None bir anahtarı kaldırır: {% querystring sort="minutes" page=None %} ayrıca 1. sayfaya geri döner.
Etiketten önce ? yazmayın; yoksa bağlantı ?? ile başlar.
Görev
Kolayjob_list.html dosyasında, sayfalama bağlantılarının ikisi de sorgu dizgesinin geri kalanını korusun. /jobs/?city=Berlin adresinde Next, ?city=Berlin&page=2 adresine gider ve Previous da şehri korur. /jobs/ adresinde ise Next yine ?page=2 adresine gider.
Berlin'e, ardından Next'e tıkla: 2. sayfada yalnızca Berlin'deki iş ilanları listelenir.
Kendin dene
{% extends "jobs/base.html" %}
{% block title %}Jobs{% endblock %}
{% block content %}
<h1>Jobs</h1>
<p class="cities">
<a href="{% url 'jobs:list' %}">All cities</a>
<a href="?city=Berlin">Berlin</a>
<a href="?city=Lisbon">Lisbon</a>
<a href="?city=London">London</a>
</p>
<ul class="jobs">
{% for job in jobs %}
<li class="job">
<a href="{% url 'jobs:detail' job.slug %}"><strong>{{ job.title }}</strong></a>
at {{ job.company }}, {{ job.city }}
</li>
{% empty %}
<li>No jobs yet.</li>
{% endfor %}
</ul>
{% if is_paginated %}
<nav class="pages">
{% if page_obj.has_previous %}
<a href="?page={{ page_obj.previous_page_number }}">Previous</a>
{% endif %}
<span>Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}</span>
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}">Next</a>
{% endif %}
</nav>
{% endif %}
{% endblock %}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Sınıf Tabanlı Görünümler bölümündeki tüm dersler
Kendi başına pratik yap: Django playground