Add support *

This commit is contained in:
2025-09-26 15:55:48 +08:00
parent f15b730dca
commit 181a78ad44
5 changed files with 1004 additions and 100 deletions

View File

@@ -84,67 +84,58 @@
<div class="col-12 mb-3">
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-md-6">
<form method="get" class="d-flex">
<select name="website" class="form-select me-2" onchange="this.form.submit()">
<option value="">所有网站</option>
{% for website in stats.websites %}
<option value="{{ website.id }}" {% if website.id == stats.selected_website_id %}selected{% endif %}>
{{ website.name }} ({{ website.region }})
</option>
{% endfor %}
</select>
<select name="page_size" class="form-select me-2" onchange="this.form.submit()">
<option value="10" {% if stats.page_size == 10 %}selected{% endif %}>10条/页</option>
<option value="20" {% if stats.page_size == 20 %}selected{% endif %}>20条/页</option>
<option value="50" {% if stats.page_size == 50 %}selected{% endif %}>50条/页</option>
<option value="100" {% if stats.page_size == 100 %}selected{% endif %}>100条/页</option>
</select>
<noscript>
<button type="submit" class="btn btn-primary">应用</button>
</noscript>
</form>
<form method="get" class="row g-3">
<div class="col-md-4">
<label for="website" class="form-label">网站筛选</label>
<select name="website" id="website" class="form-select" onchange="this.form.submit()">
<option value="">所有网站</option>
{% for website in stats.websites %}
<option value="{{ website.id }}" {% if website.id == stats.selected_website_id %}selected{% endif %}>
{{ website.name }} ({{ website.region }})
</option>
{% endfor %}
</select>
</div>
<div class="col-md-6">
<!-- 分页导航 -->
{% if stats.page_obj.has_other_pages %}
<nav aria-label="页面导航">
<ul class="pagination justify-content-end mb-0">
{% if stats.page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ stats.page_obj.previous_page_number }}{% if stats.selected_website_id %}&website={{ stats.selected_website_id }}{% endif %}{% if stats.page_size %}&page_size={{ stats.page_size }}{% endif %}" aria-label="上一页">
<span aria-hidden="true">&laquo;</span>
</a>
</li>
{% endif %}
{% for num in stats.page_obj.paginator.page_range %}
{% if stats.page_obj.number == num %}
<li class="page-item active">
<span class="page-link">{{ num }}</span>
</li>
{% elif num > stats.page_obj.number|add:'-3' and num < stats.page_obj.number|add:'3' %}
<li class="page-item">
<a class="page-link" href="?page={{ num }}{% if stats.selected_website_id %}&website={{ stats.selected_website_id }}{% endif %}{% if stats.page_size %}&page_size={{ stats.page_size }}{% endif %}">{{ num }}</a>
</li>
{% endif %}
{% endfor %}
{% if stats.page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ stats.page_obj.next_page_number }}{% if stats.selected_website_id %}&website={{ stats.selected_website_id }}{% endif %}{% if stats.page_size %}&page_size={{ stats.page_size }}{% endif %}" aria-label="下一页">
<span aria-hidden="true">&raquo;</span>
</a>
</li>
{% endif %}
</ul>
</nav>
{% endif %}
<div class="col-md-2">
<label for="page_size" class="form-label">每页条数</label>
<select name="page_size" id="page_size" class="form-select" onchange="this.form.submit()">
<option value="10" {% if stats.page_size == 10 %}selected{% endif %}>10条/页</option>
<option value="20" {% if stats.page_size == 20 %}selected{% endif %}>20条/页</option>
<option value="50" {% if stats.page_size == 50 %}selected{% endif %}>50条/页</option>
<option value="100" {% if stats.page_size == 100 %}selected{% endif %}>100条/页</option>
</select>
</div>
</div>
<div class="col-md-2">
<label for="start_date" class="form-label">开始日期</label>
<input type="date"
class="form-control"
id="start_date"
name="start_date"
value="{{ stats.start_date }}">
</div>
<div class="col-md-2">
<label for="end_date" class="form-label">结束日期</label>
<input type="date"
class="form-control"
id="end_date"
name="end_date"
value="{{ stats.end_date }}">
</div>
<div class="col-md-2 d-flex align-items-end">
<div class="btn-group" role="group">
<button type="submit" class="btn btn-primary">
<i class="bi bi-funnel"></i> 筛选
</button>
<a href="/" class="btn btn-outline-secondary">
<i class="bi bi-x-circle"></i> 清除
</a>
</div>
</div>
</form>
</div>
</div>
</div>
@@ -240,7 +231,7 @@
<ul class="pagination mb-0">
{% if stats.page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ stats.page_obj.previous_page_number }}{% if stats.selected_website_id %}&website={{ stats.selected_website_id }}{% endif %}{% if stats.page_size %}&page_size={{ stats.page_size }}{% endif %}" aria-label="上一页">
<a class="page-link" href="?page={{ stats.page_obj.previous_page_number }}{% if stats.selected_website_id %}&website={{ stats.selected_website_id }}{% endif %}{% if stats.page_size %}&page_size={{ stats.page_size }}{% endif %}{% if stats.start_date %}&start_date={{ stats.start_date }}{% endif %}{% if stats.end_date %}&end_date={{ stats.end_date }}{% endif %}" aria-label="上一页">
<span aria-hidden="true">&laquo;</span>
</a>
</li>
@@ -253,14 +244,14 @@
</li>
{% elif num > stats.page_obj.number|add:'-3' and num < stats.page_obj.number|add:'3' %}
<li class="page-item">
<a class="page-link" href="?page={{ num }}{% if stats.selected_website_id %}&website={{ stats.selected_website_id }}{% endif %}{% if stats.page_size %}&page_size={{ stats.page_size }}{% endif %}">{{ num }}</a>
<a class="page-link" href="?page={{ num }}{% if stats.selected_website_id %}&website={{ stats.selected_website_id }}{% endif %}{% if stats.page_size %}&page_size={{ stats.page_size }}{% endif %}{% if stats.start_date %}&start_date={{ stats.start_date }}{% endif %}{% if stats.end_date %}&end_date={{ stats.end_date }}{% endif %}">{{ num }}</a>
</li>
{% endif %}
{% endfor %}
{% if stats.page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ stats.page_obj.next_page_number }}{% if stats.selected_website_id %}&website={{ stats.selected_website_id }}{% endif %}{% if stats.page_size %}&page_size={{ stats.page_size }}{% endif %}" aria-label="下一页">
<a class="page-link" href="?page={{ stats.page_obj.next_page_number }}{% if stats.selected_website_id %}&website={{ stats.selected_website_id }}{% endif %}{% if stats.page_size %}&page_size={{ stats.page_size }}{% endif %}{% if stats.start_date %}&start_date={{ stats.start_date }}{% endif %}{% if stats.end_date %}&end_date={{ stats.end_date }}{% endif %}" aria-label="下一页">
<span aria-hidden="true">&raquo;</span>
</a>
</li>

View File

@@ -18,16 +18,41 @@
<div class="card">
<div class="card-body">
<form method="get" action="{% url 'search' %}">
<div class="input-group input-group-lg">
<input type="text"
class="form-control"
name="q"
value="{{ keyword }}"
placeholder="输入关键字搜索内容..."
required>
<button class="btn btn-primary" type="submit">
<i class="bi bi-search"></i> 搜索
</button>
<div class="row g-3">
<div class="col-md-6">
<label for="keyword" class="form-label">搜索关键字</label>
<div class="input-group">
<input type="text"
class="form-control"
id="keyword"
name="q"
value="{{ keyword }}"
placeholder="输入关键字搜索内容,支持 * 通配符..."
required>
<button class="btn btn-primary" type="submit">
<i class="bi bi-search"></i> 搜索
</button>
</div>
<div class="form-text">
支持通配符:使用 * 进行模糊匹配,例如 "反腐*" 可以匹配 "反腐倡廉"、"反腐斗争" 等
</div>
</div>
<div class="col-md-3">
<label for="start_date" class="form-label">开始日期</label>
<input type="date"
class="form-control"
id="start_date"
name="start_date"
value="{{ start_date }}">
</div>
<div class="col-md-3">
<label for="end_date" class="form-label">结束日期</label>
<input type="date"
class="form-control"
id="end_date"
name="end_date"
value="{{ end_date }}">
</div>
</div>
</form>
</div>
@@ -36,7 +61,7 @@
</div>
<!-- 搜索结果 -->
{% if keyword %}
{% if keyword or start_date or end_date %}
<div class="row">
<div class="col-12">
<div class="card">
@@ -93,7 +118,13 @@
{% else %}
<div class="text-center py-5">
<i class="bi bi-search fs-1 text-muted"></i>
<p class="text-muted mt-3">没有找到包含 "{{ keyword }}" 的内容</p>
<p class="text-muted mt-3">
{% if keyword %}
没有找到包含 "{{ keyword }}" 的内容
{% else %}
没有找到符合时间范围的内容
{% endif %}
</p>
<p class="text-muted">请尝试其他关键字或检查爬取任务是否正常运行</p>
</div>
{% endif %}
@@ -119,6 +150,11 @@
<span class="badge bg-light text-dark">廉政</span>
<span class="badge bg-light text-dark">违纪</span>
</div>
<div class="mt-3">
<small class="text-muted">
<i class="bi bi-info-circle"></i> 支持通配符:使用 * 进行模糊匹配,例如 "反腐*" 可以匹配 "反腐倡廉"、"反腐斗争" 等
</small>
</div>
</div>
</div>
</div>