stark组件开发之关键搜索】的更多相关文章

- 模糊搜索: 在页面生成一个表单.  以get 方式, 将数据提交到.当前查看页面. 后台接收数据,然后进行筛选过滤. 着个也需要,用户自定制!   定义一个  search_list  这个值,默认为空. 页面进行判断,为空就不显示. 搜索框!如果,用户 定义了这个列表, 那么就显示! class StartHandler(object): .......... search_list = [] # 方便,用户自己定制.关键字搜索的条件,和如果用户不配置,页面不显示搜索框 def get_s…
页面效果,只是样式.这个好解决!yield 的时候. 返回几个样式出去就好了! 并且前端写上一些样式的css {% if search_group_row_list %} <div class="panel panel-default"> <div class="panel-heading"> <i class="fa fa-filter" aria-hidden="true"></i…
- 关键字搜索. 可以做到的效果是, 输入20. 后太通过 Q()  函数. 来实现.  搜索是一个大的问题点. -  要想实现组合搜索, 首先要 明确的一点是. 在我当前的页面上, 正在进行展示的是 那一张表的数据.- 并且, 既然是搜索, 那么必然的一点就是. 我的搜索条件, 必须是 和 我这张表中的,字段由关系的. - 比如, UserInfo 表. 那么 名字就是一个 可以用作搜索的字段. 年龄也是一个可以用作搜索的字段. - 组合搜索,就是. 将 name 和 age 这两个字段, 甚…
上一篇,我只是做了. 默认的显示. def __iter__(self): '''默认显示. 用户可以自定制''' if isinstance(self.queryset_or_tuple, list): for item in self.queryset_or_tuple: yield "<a href='#'>%s</a>" % item[1] else: for item in self.queryset_or_tuple: if isinstance(i…
数据的获取,上一篇,已经有了!然后就是,如何进行展示的问题.到了展示这里,又有了新的问题, 因为从数据库,取得的数据. 分为 queryset 和 tuple 两种数据结构.tuple 中,只是字符串. queryset中确实,model对象. 而且  这些渲染出来后,全部都是 a 标签. 是可以点击的, 所以 href 超链接属性,是必须要有的. 而且还有一点是,默认选中. 用户选择之后, 应该有一个提示,我当前选择的是那个标签.  而且因为组合搜索,先选中的条件,不能够被刷新. 这种的 如果…
先看一张页面展示的效果图: 看一看我的  model 表!是什么样子: 看一看数据库是什么样子: 看 页面展示图,有表头. 有数据.模型表中,每一个字段, 都指定了 verbose_name. 如何解决? 每个子类中,自定义 list_display 用于指定, 需要展示. 表中的哪个字段(这个名字和表中的字段需要,对应上. 不能错.)class UserInfoHandler(StartHandler): list_display = ["name", "age"…
已经解决的,自定义的扩展函数,功能.但是 不可能返回. 一个 固定的页面把!  应该是,点击那条 记录之后的编辑, 就会跳转到相应的,编辑页面.所以 这个标签的  <a href="/stark/app01/userinfo/change/1/">编辑</a>  他应该是这个样子! stark  是主路由中, 路由分发的  url 路径: app01/userinfo/change/1/这个 应该是 ,根据反向解析. 的来的路径.  最后的 参数 1 是. 每条…
添加功能,还是使用, form 组件来完成!  并且 完成添加之后,需要保留原搜索条件. def memory_url(self): '''用于反向生成url, 并且携带,get请求的参数,跳转到下一个网页''' name = "%s:%s" % (self.site.namespace, self.get_add_url_name) base_url = reverse(name) # 记录原搜索条件 if not self.request.GET: add_url = base_u…
编辑功能.和添加一样! 唯一不同的就是, 需要编辑一个指定的  记录.这就需要,在列表页面, 渲染编辑的时候,添加一个 id 值: class UserInfoHandler(StartHandler): # 自定制,展示页面, 需要展示的东西. 根据每张表的不同. 自己编写! list_display = [StartHandler.display_checkbox, "name", "age", "depart", get_choice_tx…
添加: 需求: 根据用户的权限, 决定是否,有添加按钮.  通过配置进行定制,预留钩子进行权限的判断. class StartHandler(object): ..................... has_add_btn = True # 指定配置,默认显示. 用户在子类中,自定制是否显示 def get_add_btn(self): '''预留钩子,子类中重写该方法. 根据权限的判断是否显示添加按钮''' if self.has_add_btn: return "<a class=…
""" 分页组件 """ class Pagination(object): def __init__(self, current_page, all_count, base_url, query_params, per_page=20, pager_page_count=11): """ 分页初始化 :param current_page: 当前页码 :param per_page: 每页显示数据条数 :param…
class UserInfoHandler(StartHandler): ....... # 批量操作功能的列表,添加则显示, 使用此功能.需要将StartHandler.display_checkbox 添加到list_display 中 action_list = [StartHandler.action_multi_delete, StartHandler.action_multi_init] ....... class StartHandler(object): ........ def…
class StartHandler(object): .......... ordered_list = [] # 排序规则由 用户指定. def get_ordered_list(self): return self.ordered_list or ["id", ] # 默认使用 id 进行排序 per_page = 10 # 默认每页显示,多少数据. 也可在子类中,自行定制 def check_list_view(self, request):# ################…
 路由问题, 已经解决! 然后就是视图函数的问题了: 不想重复写的解决途径就是, python  类的继承了! 写一个基类, 基类定义 增删改查. 然后其他的,全部去继承他! from django.urls import path, re_path from django.http import HttpResponse, JsonResponse from django.shortcuts import render, redirect, reverse from app01 import…
对于展示页面, 可能需要显示一些. 数据库中,没有的字段. 比如, 删除按钮, 编辑按钮.  这个数据库,是没有的. 所以,可能就需要, 添加一个这个东西.  比如我在渲染的时候, 给他添加两个函数进去. 这个两函数就用来,编辑删除. 基类: class StartHandler(object): list_display = [] def __init__(self, model_class, prve): self.model_class = model_class self.prev =…
要实现,这个方法.子类中 list_diplay 这个列表, 就不能够写死.他应该是 可以根据.用户的不同,返回不同的值. 所以 就需要一个函数, 可以进行判断当前用户是谁. 并且往这个列表中添加,他可以查看的东西.所以,我在 StartHandler 基类中. 定义了一个方法,就是用于返回.这个list_display 列表. class StartHandler(object): list_display = [] def __init__(self, model_class, prve):…
app01\model.py from django.db import models # Create your models here. class Depart(models.Model): id = models.AutoField(primary_key=True) title = models.CharField(verbose_name="部门名称", max_length=32) class UserInfo(models.Model): id = models.Aut…
一.先看下django的admin是如何做搜索功能的 配置一个search_fields的列表就可以实现搜索的功能 class testbook(admin.ModelAdmin): # 第一步,定义一个函数,必须要接受三个参数 def test_action(self,request,queryset): """ :param request: :param queryset:这个就是需要批量操作的queryset对象 :return: """…
1.django的admin配置 2 stark组件开发 3.2层url分发 4.小结 1.django的admin配置 model.py from django.db import models # Create your models here. class UserInfo(models.Model): name=models.CharField(max_length=32) age=models.IntegerField() def __str__(self): return self.…
    前情提要:Django  stark 组件开发的 增删改,  model_form组件的使用 form组件的回顾 一:list_display_link  创建 功能描述:   使包含的字段能用进行跳转(编辑界面) 1:在strak组件中设置对应的接口 2:在注册表中填写注册的内容 注意该内容要对应自制列中的属性元素,即model的属性名 3:在stark中给model普通属性附加a标签    4:效果图 ,即实现了反向解析,又实现了编辑功能     二:form 组件回顾 1: for…
1.django的admin配置 model.py from django.db import models # Create your models here. class UserInfo(models.Model): name=models.CharField(max_length=32) age=models.IntegerField() def __str__(self): return self.name class Book(models.Model): title=models.…
admin源码解析 单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息.如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例…
stark组件是仿照django的admin模块开发的一套组件,它的作用是在网页上对注册的数据表进行增删改查操作. 一.配置 1.创建stark应用,在settings.py中注册stark应用 stark APP专门用于存放自定义组件的核心代码. manage.py@stark_demo > startapp stark 在settings.py文件注册stark: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth'…
一.内容回顾 类可否作为字典的key 初级 举例: class Foo(object): pass _registry = { Foo:123 } print(_registry) 执行输出: {<class '__main__.Foo'>: 123} 说明说法是成立的. 中级 class User(object): pass class Role(object): pass class Bar(object): def __init__(self,b): self.b = b _regist…
2018-10-18 19:15:54 等这个stark组件做完了再上传到github上面,然后再整理博客!这就到周末啦! 因为models导入的时候出现bug,所以只有源码没有测试数据! 源码都有注释,已经很详细啦! 一步一步能看懂! 里面重要的思想就是 用类封装,组件用模块封装! 然后解耦!把重复的东西封装成类!面向对象编程! 看源码也许是一种享受! 越努力,与幸运!永远不要高估自己! 新增了 搜索框!和批量操作! 批量操作没有默认的删除可以迭代自行完成!批量操作需要用户自己定制函数 先放上…
效果图: 新增函数和类 Option 获取字段的对象或元组 SearchGroupRow 封装数据,展示到前端 get_search_group 获取组合搜索的字段 get_search_group_condition 获取组合搜索的筛选条件 一.stark组件 import functools from types import FunctionType from django import forms from django.db.models import Q from django.db…
###############  admin基本认识和常用的定制功能    ############### stark组件 对admin的基本认识 1,就是一个app,嵌入到了django里面,你可以在settings中看到 2,就是一个web后台管理工具,使用它可以更加的方便 3,通常我们在生成项目时会在 urls.py 中自动设置好url访问路径 urlpatterns = [ url(r'^admin/', admin.site.urls) ] 4,启动开发服务器,然后在浏览器中访问 ht…
一.需求 仿照django的admin,开发自己的stark组件.实现类似数据库客户端的功能,对数据进行增删改查. 二.实现 1.在settings配置中分别注册这三个app # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contr…
----------------------------------------------------------------烦恼没完没了,内心动荡不安,呜呼哀哉. 一.有个特殊的需求,需要用stark组件来完成 django的admin,自己开发stark组件.完成类似数据库客户端的功能,对数据进行增删改查的需求. 二.这个特殊的需求,需要用stark组件来实现 1.在settings配置中分别注册这三个app # Application definition INSTALLED_APPS…
---恢复内容开始--- admin源码解析 一 启动:每个APP下的apps.py文件中. 首先执行每个APP下的admin.py 文件. def autodiscover(): autodiscover_modules('admin', register_to=site) 二 注册:在admin中注册,那么我们在登录admin的后台管理的时候回显示出来. class AdminSite(object): def __init__(self, name='admin'): self._regi…