الحفاظ على عامل التصفية
جزء من قسم واجهات العرض المعتمدة على الأصناف في رحلة Django على Coddy. الدرس 9 من 18.
افتح صفحة وظائف برلين واضغط على «التالي»: تعرض الصفحة 2 وظائف من جميع المدن. الرابط هو ?page=2، وهي سلسلة استعلام جديدة بالكامل، لذا يختفي city=Berlin.
يبدأ الوسم {% querystring %} من سلسلة الاستعلام الحالية، ويضبط القيم التي تحددها، ثم يكتب النتيجة، بما في ذلك ?. وهو مضمّن منذ Django 5.1، لذا لا يحتاج إلى {% load %}. ترتبط قائمة وصفات مُرشّحة حسب نوع المطبخ بعرض مرتّب:
<a href="{% querystring sort="minutes" %}">Quickest first</a>على /recipes/?cuisine=thai يكتب ?cuisine=thai&sort=minutes: يظل عامل التصفية محفوظًا. يمكن أن تكون القيمة متغير قالب، كما أن None يزيل مفتاحًا: {% querystring sort="minutes" page=None %} يعيدك أيضًا إلى الصفحة 1.
لا تكتب ? قبل الوسم، وإلا فسيبدأ الرابط بـ ??.
التحدي
سهلفي job_list.html، اجعل رابطَي ترقيم الصفحات يحتفظان ببقية سلسلة الاستعلام:
- ينتقل
Nextفي/jobs/?city=Berlinإلى?city=Berlin&page=2. - يحتفظ
Previousبالمدينة أيضًا. - في
/jobs/، يظلNextينتقل إلى?page=2.
اضغط على «تشغيل»، ثم اضغط على «التالي» في وظائف برلين.
جرّب بنفسك
{% 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 %}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس واجهات العرض المعتمدة على الأصناف
تدرّب بنفسك: Playground لـ Django