day 89 pip换源、 虚拟环境搭建、 路飞后台创建,配置修改,目录变更、 数据库配置、 user表配置、 路飞前台搭建、
2022/2/4 19:16:51
本文主要是介绍day 89 pip换源、 虚拟环境搭建、 路飞后台创建,配置修改,目录变更、 数据库配置、 user表配置、 路飞前台搭建、,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
回顾
# 1 restful规范--10条 # 2 django上写符合restful规范的接口 # 3 drf写接口 # 4 APIView--->继承了原生view--->get, post方法 -(为什么get请求来了就会执行get方法, 原生view) -路由配置:视图类.as_view()--->view(闭包函数)的内存地址 -请求来了,就会执行view(request, 分组分出的字段,默认传的字段)---self.dispatch() -APIView重写了dispatch: 包装了request对象, 解析器, 分页, 三大认证, 响应器, 全局异常, 去掉了csrf # Request对象: request._request, request.data, 重写了__getattr__, request.method--去原生的request中拿 -前端传过来的数据从哪儿取? -地址栏里: reqeust.GET/query_params -请求体中的数据: request.data/POST/(json格式解释不了)--->request.body中去取 -请求头中数据: request.META.get('HTTP_变成大写 ') # Response对象---》封装了原生的HttpResponse, Response: (data, headers=[], status=1/2/3/4/5开头的) # 自己封装了Response对象 # 序列化类: -Serializer -写字段, 字段名要跟表的字段对应,想不对应(source可以修改) -SerializerMethodField必须配套一个get_字段名,返回什么,前台就看到什么 -ModelSerializer -class Meta: 表对应 取出的字段(__all__, 列表) 排除的字段(用的很少) extra_kwargs会给字段属性 -重写某个字段 password = serializers.SerializerMethodField() def get_password(self, instance): return '***' -校验: 字段自己的校验,局部钩子,全局钩子 -只要序列化类的对象执行了is_valiad(), 这些钩子都会走,在钩子里写逻辑 -在表模型(model)中写方法, 可以在上面取出的字段当中直接写,不参与反序列化 -序列化多条(many=True) 本质,ListSerializer内部套了一个个的serializer对象 -重写ListSerilizer, 让序列化对象和自己写的ListSerializer对应上 -序列化类(instance, data, many, context={request, request}) -视图函数中给序列化传递数据,使用context,传回来, 放进去 # 视图 -两个视图基类APIView, GenericAPIView(继承APIView):涉及到数据库和序列化类的操作尽量用GenericAPIView -五个试图扩展类 CreateModelMixin: create DestroyModelMixin: destory ListModelMixin RetrieveModelMixin UpdateModelMixin -9个视图子类(GenericAPIView+上面5个扩展类一个或多个) RetrieveUpdateDestroyAPIView CreateAPIView RetrieveAPIView DestroyAPIView RetrieveUpdateAPIView UpdateAPIView ListAPIView RetrieveDestroyAPIView -视图集 GenericViewSet: ViewSetMixin+GenerocAPIView ModelViewSet: 5大接口都有了 ReadOnlyModelViewSet: 获取一条和多条的接口 ViewSet: ViewSetMixin+APIView ViewSetMinin:类重写了as_view,路由配置就变样了 # 路由 -基本配置 -有action的: 必须继承ViewSetMixin -自动生成: DefaultRouter和SimpleRouter -导入,实例化得到对象,注册过个,对象urls(自动生成路由) -路由相加/include -试图类当中自己定义的方法,如何自动生成路由 -在自己定义的方法上加装饰器(action) -两个参数methods=[GET,POST], 表示这两种请求都能接收 -两个参数detail=True, 表示生成带pk的链接 # 三大认证 -认证组件:校验用户是否登陆 -写一个认证类,继承BaseAuthentication, 重写authenticate,内部写认证逻辑,认证通过返回两个值,第一个是user, 认证失败,抛出异常 -全局使用,局部使用,局部禁用 -权限: 校验用户是否有权限进行后续操作 -写一个类,继承BasePermission,重写has_permission,True和False -全局使用,局部使用,局部禁用 -频率:限制用户访问频次 -写一个类,继承SimpleRateThrottle, 重写get_cache_key, 返回什么,就以谁做限制 scop=luffy字段,需要跟setting中key对应 luffy:3/h(一小时访问三次) -全局配置,局部配置, 局部禁用 -需求:发送短信验证码的接口,一分钟只能发送一次, 局部使用,配在视图类上 # 解析器:前端传的编码格式,能不能解析(默认三种全配, 基本上不需要改), 可能你写了个上传文件接口,局部配置一下,只能传form-data格式 局部使用: MultiPartParser # 响应器: 相应的数据,是json格式还是带浏览器的那种(不需要配) # 过滤器: 借助于第三方django-filter -注册应用 -setting中配置DjangoFilterBackend或者局部配置 -filter_fields = ('age', 'sex') # 排序 -全局或者局部配置rest_framework.filters.orderingFilter -视图类中配置: ordering_fields = ('id', 'age') # 分页 -使用: 继承了APIView的视图中使用 -CursorPagination cursor_query_param:默认查询字段,不需要修改 page_size: 每页数目 ordering: 按什么排序,需要指定 -LimitOffsetPagination default_limit 默认限制,默认值与PAGE_SIEZE设置一致 limit_query_param limit参数名,默认'limit' offset_query_param offset 参数名,默认'offset' -PageNumberPagination: 最常用的,需要在setting中配置page_size,四个参数 page_size 每页数目 page_query_param 前端发送的页数关键字名,默认为'page' page_size_query_param 前端发送的每页数据关键字名,默认为None max_page_size 前端最多能设置的每页数量 # 全局异常 -写一个方法 def exception_handler(exc, context): # 走drf原来的异常,原理异常有一些处理 response = drf_exception_handler(exc, context) # 我们自己处理,drf没有处理,丢给django的异常 if response is None: if isinstance(exc, DatabaseError):#处理了一下数据库错误 response = Response({'detail': '数据库错误'}, status=status.HTTP_507_INSUFFICIENT_STORAGE) else:#其他异常 response = Response({'detail': '未知错误'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) return response -配置文件中配置(以后所有drf的异常,都会走到这里) REST_FRAMEWORK = { 'EXCEPTION_HANDLER': 'my_project.my_app.utils.custom_exception_handler' } # jwt -是什么json web token 新的认证方式 -三段: 头,荷载(用户信息), 签名 -使用: 最简单的方式,在路由配置 -path('login/', obtain_jwt_token) -自定制: 多方式登录,手动签发token(两个方法) - 自定制基于jwt的认证类 -取出token -调用jwt提供的解析出payload的方法(校验是否过期, 是否合法,如果合法,返回荷载信息) -转成user对象 -返回 -RBAC: 基于角色的权限控制(django默认的auth就是给你做了这个事), 公司内部权限管理 对外的权限管理就是三大认证 -用户表 -用户组的表 -权限表 -用户对用户组中间表 -用户组对权限中间表 -用户对权限中间表
企业软件开发流程
#1 web方向,类型 #2 开发流程 -传统软件行业, 互联网行业
1 pip换源
1 pip install pymysql 国外很慢 2 pip install pymysql -i 地址 3 配置 以后pip install全走配好的源 -来到C:\Users\oldboy\AppData\Roaming %APPDATA% -创建一个pip文件夹 -新建一个文件pip.ini -写入 [global] index-url = http://pypi.douban.com/simple [install] use-mirrors =true mirrors =http://pypi.douban.com/simple/ trusted-host =pypi.douban.com
2 虚拟环境搭建
1 不同的项目依赖不同的模块版本,不能共用一套环境,虚拟环境 2 在系统的python环境中安装 -下载 pip3 install virtualenv pip3 install virtualenvwrapper-win -修改环境变量 WORKON_HOME: D:\Virtualenvs -python安装路径,scripts文件下执行virtualenvwrapper.bat 3 使用: -workon #列出有的虚拟环境(aaa) -workon aaa #使用这个虚拟环境 -mkvirtualenv -p python3 luffy # 创建虚拟环境 -rmvirtualenv 虚拟环境 # 删除虚拟环境 4 安装django环境 pip install django==2.2.2 5 基于虚拟环境创建项目(不要在pycharm选择)
3 路飞后台创建,配置修改,目录变更
# 在控制台直接指向项目 python manage.py runserver ---》manage.py的内容要改 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.dev') # 项目上线,走的不是manage.py---》uwsgi.py,需要修改 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.dev') # 国际化 # 创建app:startapp在哪执行,就把app创建在哪 python ../../manage.py startapp home # 注册app -
4 数据库配置
# 项目依赖的数据库, luffyapi -create database luffyapi # 创建数据库用户,并且授予luffyapi这个库的权限 -grant all privileges on luffyapi.* to 'luffyapi'@'%' identified by 'Luffy123?'; -fulsh privileges # 项目连接 -setting中配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'luffyapi', 'USER': 'luffyapi', 'PASSWORD': 'Luffy123?', 'PORT': 3306, 'HOST': '127.0.0.1' } } -用pymysql连接数据库 -django超过: 2.0.7 -需要改源码
5 User表配置
# 用户要基于auth的user表,必须在数据库迁移命令之前操作好,后期如果再做,会出错 -把所有app下的迁移文件,全删除 -admin,auth app下的迁移文件删除 -删库(数据一定要导出来),重新迁移 (自己尝试一下) # 继承AbstractUser,增加两个字段,telephone,icon(依附于pillow) # 在setting中配置 MEDIA_URL='/media/' MEDIA_ROOT=os.path.join(BASE_DIR,'media') #现在的BASEDIR是luffyapi下的luffyapi AUTH_USER_MODEL='user.user' # 路由,打开media文件夹 re_path('media/(?P<path>.*)', serve,{'document_root':settings.MEDIA_ROOT}),
6 路飞前台搭建
# 1 安装node,官网下载,直接下一步 node -v # 2 a安装模块 npm install 模块名 #npm比较慢,用淘宝的cnpm来替换npm # 3 npm install -g cnpm --registry=https://registry.npm.taobao.org # 4 创建Vue的工程(需要有一个Vue脚手架) # 5 如果出问题执行如下, 重新走3,4 npm cache clean --force # 6 命令行敲 Vue 就会有提示 # 7 创建Vue项目 vue create luffycity # 8 用pycharm打开 在terminal下敲: npm run serve
这篇关于day 89 pip换源、 虚拟环境搭建、 路飞后台创建,配置修改,目录变更、 数据库配置、 user表配置、 路飞前台搭建、的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?