CRM项目总结
web无外乎是对地址的访问
后台生成地址,将数据和地址发送到前台,放在前台适当的位置
views可以直接在urls.py中写
函数加括号的优先级最高
类(),实例化对象
request.POST只能解析urlencoded编码,不能接受json格式数据,json要从request.body中取.
如何自动生成针对特定模型表的增删查改操作?
获取模型表所在应用名,拼接上模型表小写名,加上操作(二级路由不能写在StarkSite中,不能针对不同的configobj来生成配置类对象)
前端根据不同的对象.属性,如何根据不同对象自动获取其属性名?
获取对象和对象要显示的属性列表,表头:self.model._meta.get_field('%s' % lis).verbose_name / 表体:getattr(对象,field)
如何将所有的表都设置上自定义的属性列?
将原有属性列表传入,在源码中重新生成一个要显示的属性字典
如何判断是表头还是表体?(编辑字段在表头中是字符串,在表体中是a链接)
在函数中加字段:isheader = False,来控制走不同的代码
如何通过点击不同对象的编辑删除按钮,获取到对应的路由?
反向解析,在页面加载的时候,就已经完成了路由的生成,app名/表名/操作名/对象id,而不是点击的时候才生成路由
如何实现display_links功能?.
display_links实际就是将字段改为a链接,地址为编辑页面
如何实现编辑页面,初始状态就渲染出数据?
modelform可以简单实现
在前端加判断,如果当前的publish== obj.publish 或 authors in authors_list ,说明是编辑
如何保存搜索条件?
每次的请求都会通过后台,在后台拼接数据,重新返回给前台
request.GET,获取搜索条件,import copy ,deepcopy,request.GET.urlencoded()转换为name=xxx&pwd=xxx形式
如何封装类?
将所有需要的参数当做初始化参数传入,变为类的一个属性
如何实现查询表,并且是模糊查询?
Q对象,append入字段和查询条件,修改查询为或关系,queryset.filter(q)
如何实现保存搜索框查询条件?
保存查询条件,返回去前台,value = 后台返回数据
如何实现批量处理?
获取批量id:request.post.getlist("name"),checkbox自动传选中id
批量操作:查询出来选中的queryset对象,直接执行操作
如何实现联合查询地址?
deepcopy,得到字典,重新添加新的值,urlencoded将结构变为 name = chuck&age = 18
为什么 href="?name = chuck",就可以直接访问地址?
浏览器会默认将地址拼接,然后发送get请求,get请求到后台之后取出来数据,用数据进行查询
如何实现联合查询?
q = Q().children.append((filter_field,field_val)) :append()必须是用括号包起来
queryset.filter(q)
如何实现权限管理?
权限本质上就是是否能够访问地址,---stark/app/user/edit/(\d+)/ ;可以将权限地址放在session中,前台将要访问的地址和后台传过来的地址匹配,能匹配上就说明有访问权限。
如何实现权限展示?
后台获取到当前用户的权限数据,通过session将需展示的权限名字,和权限地址发送到前端。
权限中间件