首页 / PYTHON / python笔记22(CRM2)
python笔记22(CRM2)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python笔记22(CRM2),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6118字,纯文字阅读大概需要9分钟。
内容图文
![python笔记22(CRM2)](/upload/InfoBanner/zyjiaocheng/850/29a05cfbe3474ee79b2d66b9d6a6849d.jpg)
一、内容回顾
1. django请求生命周期/在浏览器输入一个地址回车。
- 实现了wsgi协议(本质写一个socket服务端):
- wsgiref模块,适用开发测试。
- uwsgi模块,处理并发。
- 中间件
- 路由
- 视图
- orm
- 模板
2. 框架认识
- django:重武器,包含了很多方便的组件。
- flask:轻量级,丰富的第三方组件。
简单程序:flask可以完成。
大型程序:django合适。
3. django提供了哪些方便的组件?
- admin
- auth
- ORM
- form/modeform
- session
...
二、内容概要:权限系统
1. 二级菜单
2. 导航条
3. 粒度控制到按钮级别
三、内容详细
1. 二级菜单
前夕:
- 一个url就是一个权限
- 人拥有的权限多少本质就是拥有多少一个url的访问权限。
a. 提供基础模板
把static和templates放在web下面
Django项目会先从项目下面最外层找,然后按照注册的app顺序在每个app目录下找
b. 二级菜单示例
在配置文件中写一个数据结构(字典或列表)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429127.jpg)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429149.jpg)
# ################################### 菜单结构 ############################################# MENU_LIST=[ { 'title':'用户管理', 'icon':'fa-clipboard', 'children':[ {'title':'个人中心','url':'/web/index/'}, {'title':'用户列表','url':'/web/user/'}, ] }, { 'title':'商品管理', 'icon':'fa-clipboard', 'children':[ {'title':'商品列表','url':'/web/order/'}, {'title':'活动列表','url':'/web/center/'}, ] } ]settings.py
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429127.jpg)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429149.jpg)
from django.shortcuts import render from django.conf import settings # 推荐 即包含django内置的,也包含自己写入settings文件的 def index(request): return render(request,'index.html',{'menus':settings.MENU_LIST})home.py
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429127.jpg)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429149.jpg)
<div class="static-menu"> 这里写菜单 {% for item in menus %} <div class="item"> <div class="title"> <span class="icon-wrap"><i class="fa {{ item.icon }}"></i></span> {{ item.title }} </div> <div class="body"> {% for child in item.children %} <a href="{{ child.url }}">{{ child.title }}</a> {% endfor %} </div> </div> {% endfor %} </div>layout.html
c. 在模板中调用函数,需要将函数定义在某个特定的地方。
特定的地方:任意app目录下的templatetags目录中定义。
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429127.jpg)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429149.jpg)
# simple_tag # 在此处定密函数(特殊要求) from django.template import Library # 导入mark_safe可以让数据安全的在页面显示 from django.utils.safestring import mark_safe from django.conf import settings # 必须叫register register = Library() @register.simple_tag def show_menu(a1): return mark_safe('<a>菜单1</a>') # inclusion_tag @register.inclusion_tag('menu.html') def get_menu(request): """ :param request: 请求相关的所有数据 :return: """ return {'menus':settings.MENU_LIST}templatetags-xxxxxxxx.py
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429127.jpg)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429149.jpg)
<!--去读取配置文件中的MENU_LIST,自动在页面上显示数据--> <!---导入xxxxxxxx模块-> {% load xxxxxxxx %} <!--执行show_menu函数并传递参数--> {# {% show_menu 'aaa'%}#} <!--执行get_menu函数并传递参数 request相当于请求的数据,可以是其他参数--> {% get_menu request%}layout.html
d. 访问菜单默认选中
方式一:菜单默认选中时显示红色
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429127.jpg)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429149.jpg)
from django.template import Library # 导入mark_safe可以让数据安全的在页面显示 from django.utils.safestring import mark_safe from django.conf import settings # 必须叫register register = Library() # inclusion_tag @register.inclusion_tag('menu.html') def get_menu(request): """ :param request: 请求相关的所有数据 :return: """ current_url = request.path_info return {'menus':settings.MENU_LIST,'current_url':current_url}templatetags-xxxxxxxx.py
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429127.jpg)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429149.jpg)
<div class="static-menu"> {# 这里写菜单#} {% for item in menus %} <div class="item"> <div class="title"> <span class="icon-wrap"><i class="fa {{ item.icon }}"></i></span> {{ item.title }} </div> <div class="body"> {% for child in item.children %} {% if current_url == child.url %} <a style="color: red" href="{{ child.url }}">{{ child.title }}</a> {% else %} <a href="{{ child.url }}">{{ child.title }}</a> {% endif %} {% endfor %} </div> </div> {% endfor %} </div>menu.html
方式二:将样式单独写在css文件中,在xxxxxxxx.py中进行判断
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429127.jpg)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429149.jpg)
.static-menu a.active { color: #2F72AB; border-left: 2px solid #2F72AB; }CSS文件
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429127.jpg)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429149.jpg)
<div class="static-menu"> {# 这里写菜单#} {% for item in menus %} <div class="item"> <div class="title"> <span class="icon-wrap"><i class="fa {{ item.icon }}"></i></span> {{ item.title }} </div> <div class="body"> {% for child in item.children %} <a class="{{ child.class }}" href="{{ child.url }}">{{ child.title }}</a> {% endfor %} </div> </div> {% endfor %} </div>menu.html
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429127.jpg)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429149.jpg)
import copy # simple_tag # 在此处定密函数(特殊要求) from django.template import Library # 导入mark_safe可以让数据安全的在页面显示 from django.utils.safestring import mark_safe from django.conf import settings # 必须叫register register = Library() # inclusion_tag @register.inclusion_tag('menu.html') def get_menu(request): """ :param request: 请求相关的所有数据 :return: """ new_menu_list = copy.deepcopy(settings.MENU_LIST) for item in new_menu_list: for child in item['children']: if request.path_info == child['url']: child['class'] = 'active' break return {'menus':new_menu_list}xxxxxxxx.py
方式三:
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429127.jpg)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429149.jpg)
# ################################### 菜单结构 ############################################# MENU_LIST = [ { 'title': '用户管理', 'icon': 'fa-clipboard', 'class': 'hide', 'children': [ {'title': '个人中心', 'url': '/web/index/'}, {'title': '用户列表', 'url': '/web/user/'}, ] }, { 'title': '商品管理', 'icon': 'fa-clipboard', 'class': 'hide', 'children': [ {'title': '商品列表', 'url': '/web/order/'}, {'title': '活动列表', 'url': '/web/center/'}, ] } ]settings.py
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429127.jpg)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429149.jpg)
import copy # simple_tag # 在此处定密函数(特殊要求) from django.template import Library # 导入mark_safe可以让数据安全的在页面显示 from django.utils.safestring import mark_safe from django.conf import settings # 必须叫register register = Library() # inclusion_tag @register.inclusion_tag('menu.html') def get_menu(request): """ :param request: 请求相关的所有数据 :return: """ new_menu_list = copy.deepcopy(settings.MENU_LIST) flag = False for item in new_menu_list: for child in item['children']: if request.path_info == child['url']: child['class'] = 'active' item['class'] = '' flag = True break if flag: break return {'menus': new_menu_list}xxxxxxxx.py
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429127.jpg)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429149.jpg)
<script> $(function () { $('.multi-menu .title').click(function () { $(this).next().toggleClass('hide'); }); }) </script>layout.html
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429127.jpg)
![python笔记22(CRM2) - 文章图片](/upload/getfiles/0001/2021/5/6/20210506024429149.jpg)
<div class="multi-menu"> {# 这里写菜单#} {% for item in menus %} <div class="item"> <div class="title"> <span class="icon-wrap"><i class="fa {{ item.icon }}"></i></span> {{ item.title }} </div> <div class="body {{ item.class }}"> {% for child in item.children %} <a class="{{ child.class }}" href="{{ child.url }}">{{ child.title }}</a> {% endfor %} </div> </div> {% endfor %} </div>menu.html
总结:写简单程序时,基于示例6进行实现。
内容总结
以上是互联网集市为您收集整理的python笔记22(CRM2)全部内容,希望文章能够帮你解决python笔记22(CRM2)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。