• 售前

  • 售后

热门帖子
入门百科

django admin search_fields placeholder 管理背景添加搜刮框提示笔墨

[复制链接]
版砖批发握 显示全部楼层 发表于 2021-10-26 12:50:19 |阅读模式 打印 上一主题 下一主题
本文主要介绍了django admin search_fields placeholder 管理配景添加搜索框提示笔墨,分享给各人,详细如下:


如图, Django admin配景天生的搜索框, 默认是没有提示笔墨的, 不敷友好; 网上也没搜到什么好的示例, 于是本身动手实现了一个
0. 已经存在的app名为carousel, 大致相当于如下使用/代码
  1. $ python manage.py startapp carousel
  2. # settings.py
  3. ```
  4. INSTALLED_APPS = [
  5.   ...
  6.   'carousel',
  7. ]
  8. ```
  9. # carousel/models.py
  10. ```
  11. from django.db import models
  12. class Carousel(models.Model):
  13.   community = models.IntegerField('小区ID')
  14.   
  15.   class Meta:
  16.     verbose_name = verbose_name_plural = '轮播设置'
  17. ```
复制代码
1. 定制模板标签templatetags
  1. mkdir -p carousel/templatetags
  2. touch carousel/templatetags/__init__.py
  3. touch carousel/templatetags/search_with_placeholder.py
复制代码
  1. # carousel/templatetags/search_with_placeholder.py
  2. from django.contrib.admin.templatetags.admin_list import (
  3.   InclusionAdminNode,
  4.   register,
  5.   search_form,
  6. )
  7. def search_form_plus(cl, search_placeholder: str = ""):
  8.   """
  9.   Display a search form for searching the list with placeholder.
  10.   """
  11.   return dict(search_form(cl), search_placeholder=search_placeholder)
  12. @register.tag(name="search_form_plus")
  13. def search_form_tag(parser, token):
  14.   return InclusionAdminNode(
  15.     parser,
  16.     token,
  17.     func=search_form_plus,
  18.     template_name="search_form_plus.html",
  19.     takes_context=False,
  20.   )
复制代码
2. 定制模板template
  1. mkdir -p carousel/templates/admin
  2. mkdir -p carousel/templates/custom_admin
  3. touch carousel/templates/admin/search_form_plus.html
  4. touch carousel/templates/custom_admin/change_list.html
复制代码
  1. <!-- carousel/templates/admin/search_form_plus.html -->
  2. {% load i18n static %}
  3. {% if cl.search_fields %}
  4. <div id="toolbar"><form id="changelist-search" method="get">
  5. <div><!-- DIV needed for valid HTML -->
  6. <label for="searchbar"><img src="{% static "admin/img/search.svg" %}" alt="Search"></label>
  7. <input type="text" size="40" name="{{ search_var }}" placeholder="{{ search_placeholder }}" value="{{ cl.query }}" id="searchbar" autofocus>
  8. <input type="submit" value="{% translate 'Search' %}">
  9. {% if show_result_count %}
  10.   <span class="small quiet">{% blocktranslate count counter=cl.result_count %}{{ counter }} result{% plural %}{{ counter }} results{% endblocktranslate %} (<a href="?{% if cl.is_popup %}_popup=1{% endif %}" rel="external nofollow" >{% if cl.show_full_result_count %}{% blocktranslate with full_result_count=cl.full_result_count %}{{ full_result_count }} total{% endblocktranslate %}{% else %}{% translate "Show all" %}{% endif %}</a>)</span>
  11. {% endif %}
  12. {% for pair in cl.params.items %}
  13.   {% if pair.0 != search_var %}<input type="hidden" name="{{ pair.0 }}" value="{{ pair.1 }}">{% endif %}
  14. {% endfor %}
  15. </div>
  16. </form></div>
  17. {% endif %}
复制代码
  1. <!-- carousel/templates/custom_admin/change_list.html -->
  2. {% extends "admin/change_list.html" %}
  3. {% load search_with_placeholder %}
  4. {% block search %}{% search_form_plus cl search_placeholder %}{% endblock %}
复制代码
3. 定制admin.py
cat carousel/admin.py
  1. # Django3.1
  2. from django.contrib import admin
  3. from .models import BoxCarousel, Carousel,
  4. class PlaceholderMixin:
  5.   change_list_template = "custom_admin/change_list.html"
  6.   def changelist_view(self, request, extra_context=None):
  7.     search_placeholder = getattr(self, "search_placeholder", False)
  8.     if search_placeholder:
  9.       extra_context = extra_context or {}
  10.       extra_context["search_placeholder"] = search_placeholder
  11.     return super().changelist_view(request, extra_context)
  12. @admin.register(Carousel)
  13. class CarouselAdmin(PlaceholderMixin, admin.ModelAdmin):
  14.   search_fields = ["=community"]
  15.   search_placeholder = "请输入小区ID"
复制代码
其他列表页, 假如也想表现提示笔墨, 只需继承PlaceholderMixin, 然后定义search_placeholder就可以了
到此这篇关于django admin search_fields placeholder 管理配景添加搜索框提示笔墨的文章就介绍到这了,更多相关django admin search_fields placeholder搜索框内容请搜索草根技术分享从前的文章或继承浏览下面的相关文章盼望各人以后多多支持草根技术分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作