python异常处理
异常处理异常Exception####### 错误 Error逻辑错误:算法写错了,例如加法写成了减法
笔误:例如变量名写错了,语法错误
函数或类使用错误,其实这也属于逻辑错误
总之,错误是可以避免
异常Exception本意就是意外情况
这有个前提,没有出现上面说的错误,也就是说程序写的没有问题,但是在某些情况下,会出现一些意
外,导致程序无法正常的执行下去。
例如open函数操作一个文件,文件不存在,或者创建一个文件时已经存在了,或者访问一个网络文件,
突然断网了,这就是异常,是个意外的情况。
异常不可能避免
错误和异常
在高级编程语言中,一般都有错误和异常的概念,异常是可以捕获,并被处理的,但是错误是不能被捕获的。
举例
对比异常和错误
with open('testabc') as f:
pass
# 异常
Traceback (most recent call last):
File "test.py", line 4, in <module>
with open('testabc') as f:
FileNotFoundError: [Errno ...
python时间模块
时间模块常见时间名词GMT格林威治标准时间,指的是太阳经过格林威治处的本初子午线时的时间,是最早的时间时标准
时区1884年制定了时区,以本初子午线为起点,经度每隔15度,划分一个时区,相邻时区相差一个小时。
UTC协调世界时,目前的世界时标准
它由全球很多个国家的绝原子钟时间协调得来,与所处地点无关,为了适应地球自转误差,UTC会做人为调整,比如润秒。
可以简单的认为,GMC就是UTC+0。
CST中国标准时间,UTC+8:00,也称为北京时间,
时间模块datetime模块datetime类是时间高级类
类方法,即使用类调用的方法,由类方法获得一个时间对象
now(tz=None)返回当前时间的datetime对象,时间到微秒,如果tz为None,返回当前时区的不带时区信息的时间
utcnow() 不带时区的0时区时间
fromtimestamp(timestamp,tz=None)从一个时间戳返回一个datetime对象
tz=datetime.timezone.utc 即0时区timezone对象
时间对象方法
timestamp() 返回一个到微秒的 ...
猛犸系统-权限和角色
权限和角色概念每个用户都有自己的权利,能干什么不能干什么,这就是权限
User1有权限A、B、C
User2有权限A、B、C
User3有权限A、B、C、D
User4有权限D、F
有多个用户,可能拥有同样的权限,可以认为他们是一组
P1组有权限A、B、C
P2组有权限D、F
User1属于P1组,就直接拥有了A、B、C权限
User2属于P1组,也就直接拥有了A、B、C权限
User3属于P1组,也就直接拥有了A、B、C权限,单独再为User3赋予D权限即可
User4属于P2组,就直接拥有了D、F权限
从上面分析可知,有用户、组、权限,他们形成了关系。组就是角色,很多用户都可以赋予该角色。
这种基于角色的权限设计成为RBAC(Role-Based Access Control)
复杂设计:用户自身有权利,用户还可以同时属于组,获得组的权利。
简单设计:用户必须属于组,获得组的权利。
Django实现了复杂的设计,但是可以简化。
Django权限设计
Django权限表
用户和组,属于多对多关系。一个用户可以属于多个组,一个组可以有多个用户,
组和组权限,多对多,一个组可以赋予多个 ...
python模块化
模块化一般来说,编程语言中,库、包、模块是同一种概念,是代码组织方式。
Python中只有一种模块对象类型,但是为了模块化组织模块的便利,提供了”包”的概念。
模块module:指的是Python的源代码文件。
包package:指的是模块组织在一起的和包名同名的目录及其相关文件
导入语句语句
语句
含义
import 模块1[,模块2,…]
完全导入
import … as …
模块别名
import 语句
找到指定的模块,加载和初始化它,生成模块对象。找不到抛出异常
在import所在的作用域的局部命名空间中,增加名称和上一步创建的对象关联
单独运行下面例子,体会区别:
import functools #导入模块
print(dir())
print(functools , type(functools))
print(functools.wraps)
#输出
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', ...
猛犸系统-用户功能1
用户功能1用户功能实现功能有:
用户列表、分页
添加用户、用户修改、用户删除
激活、禁用用户
用户搜索
角色配置
组件和路由新建src/views/users/UserView.vue
<template>
<div>用户列表页</div>
</template>
<script>
export default {}
</script>
<style>
</style>
路由配置
import User from '../views/user/UserView' // .vue可以省略
const routes = [
{ path: '/', redirect: '/login' },
{ path: '/login', component: Login },
{
path: '/home',
component: Home,
redirect: '/welcome', // 访问/home重 ...
猛犸系统-用户功能2
用户功能2Vue插槽参考 https://cn.vuejs.org/v2/guide/components-slots.html
插槽插槽,指的是在子组件中挖一个空(slot插槽),在父组件中使用子组件标签内的内容,来填充子组件的空。
注意:以上是原理图,不能和Vue的实际代码完全对应。
插槽测试新建T1.vue和T2.vue,T1是父组件,T2是子组件。
<template>
<div>
父组件T1内容
<hr />
<T2>父组件中在子组件插入的内容c</T2>
</div>
</template>
<script>
import T2 from './T2.vue'
export default {
components: {
T2
}
}
</script>
<style>
</style>
<template>
<div>子组件T2内容</div>
</template>
<script>
e ...
猛犸系统-用户功能3
用户功能3用户信息菜单下拉菜单参考https://element.eleme.cn/#/zh-CN/component/dropdown
src/plugins/element.js
import Vue from 'vue'
import {
Form, FormItem, Input, Button, Message, Container,
Header, Aside, Main, Menu, MenuItem, Submenu, Breadcrumb,
BreadcrumbItem, Card, Row, Col, Table, TableColumn,
Dialog, Pagination, Switch, MessageBox, Tooltip,
DropdownMenu, DropdownItem, Dropdown
} from 'element-ui'
Vue.use(Dropdown)
Vue.use(DropdownMenu)
Vue.use(DropdownItem)
src/views ...
猛犸系统-登录前台开发
登录前台开发登录功能分支增加一个login分支检出,开发完成后合并到master,并提交到Gitee仓库。
在项目根目录下
wayne@wayne-pc MINGW64 /e/ClassProjects/frontprojects/mammoth (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
wayne@wayne-pc MINGW64 /e/ClassProjects/frontprojects/mammoth (master)
$ git checkout -b login
Switched to a new branch 'login'
注意下面分支的变化,已近变成login分支了
wayne@wayne-pc MINGW64 /e/ClassProjects/frontprojects/mammoth (login)
$ git status
On branch logi ...
猛犸系统-登录功能开发
登录功能开发
后台构建python3.7+、Django3.0+
安装在Pycharm中,创建Django项目Mammothbe,命令行中执行以下操作
$ pip install django
$ pip install mysqlclient
$ pip install djangorestframework
$ django-admin startproject mammoth .
$ python manage.py startapp user
在user包目录下,新建urls.py、serializers.py
在项目根目录下,创建utils包目录
全局配置setting.py
前后端分离,不使用模板
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
DEBUG = True # 生产环境一定设置为False
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django. ...
python目录文件处理
目录文件处理文件IO操作
函数
说明
open
打开
read
读取
write
写入
close
关闭
readline
行读取
readlines
多行读取
1、open方法
open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None,closefd=True, opener=None)
打开一个文件,返回一个文件对象(流对象)和文件描述符。打开文件失败,则返回异常。
基本使用:创建一个文件test,然后打开它,用完关闭
f = open("test") # file对象
# windows <_io.TextIOWrapper name='test' mode='r' encoding='cp936'>
# linux <_io.TextIOWrapper name='test' mode='r' encoding='UTF-8'>
print(f.read()) # 读取 ...