Menu
CoddyTech

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 tüm şehirlerdeki iş ilanları listelenir. Bağlantı ?page=2 şeklindedir; bu tamamen yeni bir sorgu dizesidir, dolayısıyla city=Berlin kaybolur.

{% querystring %} etiketi geçerli sorgu dizesinden başlar, adını verdiğiniz değerleri ayarlar ve sonucu, ? işareti de dahil olmak üzere yazar. Django 5.1'den itibaren 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 ?cuisine=thai&sort=minutes yazar: filtre korunur. Bir değer şablon değişkeni olabilir ve None bir anahtarı kaldırır: {% querystring sort="minutes" page=None %} ayrıca 1. sayfaya döner.

Etiketten önce ? yazmayın; yoksa bağlantı ?? ile başlar.

challenge icon

Görev

Kolay

job_list.html içinde, sayfalama bağlantılarının her ikisinin de sorgu dizgesinin geri kalanını korumasını sağla:

  • /jobs/?city=Berlin adresindeki Next, ?city=Berlin&page=2 adresine gider.
  • Previous da şehri korur.
  • /jobs/ adresinde Next yine ?page=2 adresine gider.

Run'a bas ve Berlin iş ilanlarında Next'e bas.

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 %}
quiz iconKendini test et

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