Web开发前奏

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 Web开发前奏,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

浅谈项目开发

  • 企业的web项目类型

    1. 商城 (某某团购)
        1.1 B2C直销商城 商家与会员直接交易(Busioness To Customer)
        1.2 B2B批发商城 商家与商家直接交易
        1.3 B2B2C购物平台 商家和会员在另一个商家提供的平台上进行交易
        1.4 C2B定制商城 会员向商家发起定制商品的需求, 商家去完成
        1.5 O2O线上线下交易平台
        1.6 C2C二手交易平台
    2. 门户网站[企业网站和门户网站]
    3. 社交网络 (APP后端) 
    4. 咨询论坛 (技术, 买资料)
    5. 内部系统 (办公管理, 人事管理, 客户关系管理)
    6. 个人博客
    7. 内容收费
  • 企业项目开发流程

    👉立项可以参考此博文:立项管理

    • 项目来源

      1. 公司需求
      2. 客户定制
      3. 互联网项目
    • 流程

      * 1. 立项
           需求分析(产品经理, 技术人员) --> 产品原型 --> 前/后端
      * 2. 前端(根据原型图)
           ui前端 --> ui切图 --> 前端实现 
      * 3. 后端
           项目架构, 技术选型 --> 需求说明书, 原型图 --> 开发接口 --> 接口文档
      * 4. 前后端代码整合
           前后端联调 --> 继承测试(测试部, 质量控制部...)
      * 5. 上线
      
      工作流程: 公司项目管理平台(禅道...) --> 看自己的任务 --> 确定需求(询问测试, 询问发布任务的人员) 
      --> 写代码 --> 提交到git仓库 --> 管理平台将需求设置完成

      imageimage

    • 开发模式

      SCRUM官方权威指南:用于开发、交付和持续支持复杂产品的一个框架。

      瀑布模式: 早期被广泛采用的软件开发模型 --> 开发完在测试 --> 出问题在调试
      敏捷开发: 完成一个模块--> 测试 --> 上线 --> 下一个循环
      	 scrum --> Sprint周期(小功能从开发到完成的时间) -->1 周
      	 不做整体数据库的设计 --> 写到哪个模块,再去设计相关表

      image

  • pip换源

    • 哪些源可以换
      直接通过pip访问的是外网, 速度慢. 将pip的访问地址换成国内的地址, 加快下载模块的速度.国内一些机构对Python官网的模块进行了备份.国内五大源:    阿里云           https://mirrors.aliyun.com/pypi/simple/    清华大学        https://pypi.tuna.tsinghua.edu.cn/simple/
    • 临时修改pip install xxx -i 地址

      eg:

      pip install pymysql -i http://pypi.douban.com/simple

      image

    • 永久修改
      • Windows
        """1、文件管理器文件路径地址栏敲:%APPDATA% 回车,快速进入 C:\Users\用户\AppData\Roaming 文件夹中2、新建 pip 文件夹并在文件夹中新建 pip.ini 配置文件3、新增 pip.ini 配置文件内容"""
      • MacOS、Linux
        1、在用户根目录下 ~ 下创建 .pip 隐藏文件夹,如果已经有了可以跳过    -- mkdir ~/.pip2、进入 .pip 隐藏文件夹并创建 pip.conf 配置文件    -- cd ~/.pip && touch pip.conf3、启动 Finder(访达) 按 cmd+shift+g 来的进入,输入 ~/.pip 回车进入4、新增 pip.conf 配置文件内容
      • 配置文件内容
        [global]index-url = http://pypi.douban.com/simple[install]use-mirrors = truemirrors = http://pypi.douban.com/simple/trusted-host = pypi.douban.com
      • pycharm换源

        链接地址:最新pycharm更换镜像源

        • 旧版pycharmimage

          image

        • 2022.1版本后image

  • 创建虚拟环境

    • 创建背景

      同一个版本的Python建立的项目只能对应一个版本的模块.
          例:
          项目1, python3.6 使用 django1.x (运行项目2之后运行项目1, 需要卸载django2.x, 重装django1.x)
          项目2, python3.6 使用 django2.x (运行项目1之后运行项目2, 需要卸载django1.x, 重装django2.x)
          在开发多个软件的时候, 使用的模块版本不同则需要重新下载安装.
      
      使用虚拟环境的好处:
      不同的应用, 开发环境相互独立, 环境升级不影响其他应用, 也不会影响全局的Python环境.
      防止出现包管理混乱及包版本冲突.
    • pycharm中搭建

      image

    • windows系统中搭建

      • 常见命令
        1. 创建项目
           命令: mkvirtualenv -p python3.8 虚拟环境名字  
        
        2. 查看创建的虚拟环境
           命令: workon
           
        3. 使用虚拟环境
           workon 虚拟环境名字  
        
        4. 进入|退出 虚拟环境的Python环境
          python | exit()
          
        5. 为虚拟环境安装模块(已经进入到虚拟环境中)
           pip install 模块名
        
        6. 退出当前虚拟环境
           deactivate
           
        7. 删除虚拟环境 (删除当前虚拟环境要先退出, 也可以直接找到项目文件夹删除)
           rmvirtualenv 虚拟环境名字
      • 安装依赖的模块

        建议安装的时候换个源,太慢了, 安装完,在script文件夹下就会有virtualenv.exevirtualenvwrapper.bat批处理文件

        pip install virtualenv  虚拟环境模块: 创建虚拟环境麻烦 搭配↓
        pip install virtualenvwrapper-win  虚拟环境辅助模块: 更快捷方便的操作和管理虚拟环境
      • 建立项目存放目录
        在D盘下创建一个Virtualenvs文件夹
      • 配置环境变量
        变量名 WORKON_HOME
        变量值 D:\Virtualenvs

        image

      • 配置信息同步
        找到安装Python的目录, 打开Script目录 以管理员身份运行virtualenvwrapper.bat文件执行一闪而过, 看不到什么信息的

        image

      • 创建虚拟环境项目mkvirtualenv -p python3.8 虚拟环境名称image
      • 查看虚拟环境的文件workonimage
      • 进入虚拟环境workon luffy
      • 测试pip install django==2.2.14image
    • linux系统中搭建

      # mac和linux## 第一步安装pip3 install -i https://pypi.douban.com/simple virtualenvpip3 install -i https://pypi.douban.com/simple virtualenvwrapper## 第二步:找到virtualenvwrapper先找到virtualenvwrapper的工作文件 virtualenvwrapper.sh,该文件可以刷新自定义配置,但需要找到它MacOS可能存在的位置 /Library/Frameworks/Python.framework/Versions/版本号文件夹/binLinux可能所在的位置 /usr/local/bin  |  ~/.local/bin  |  /usr/bin建议不管virtualenvwrapper.sh在哪个目录,保证在 /usr/local/bin 目录下有一份如果不在 /usr/local/bin 目录,如在 ~/.local/bin 目录,则复制一份到 /usr/local/bin 目录    -- sudo cp -rf ~/.local/bin/virtualenvwrapper.sh /usr/local/bin### 第三步:配置环境变量# 在 ~/.bash_profile 完成配置,virtualenvwrapper的默认默认存放虚拟环境路径是 ~/.virtualenvs# WORKON_HOME=自定义存放虚拟环境的绝对路径,需要自定义就解注VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3source /usr/local/bin/virtualenvwrapper.sh# 在终端让配置生效:    -- source ~/.bash_profile
  • 重构项目目录

    • 规划
      luffy                  项目名    |--logs/             项目运行事/开发时 的日志目录 -包  |--script/           项目临时使用脚本文件目录  |--doc/              存放项目介绍信息      |--readme.md     项目说明  |--luffy/            项目主应用, 开发时代码存放的目录 -包      |--urls.py       总路由文件      |--wsgi.py       Web服务器网关接口      |--utils/        多个模块, 子应用的公共函数类库, 自己开发的组件      |--apps/         开发者的代码存放的目录, 以子应用为目录 -包      |--libs/         第三类/库存放目录, 第三方组件, 模块, 包      |--settings/     配置目录         |--dve.py     项目来发是本地配置文件         |--prod.py    项目上线是运行的配置文件 |--requirement.txt    项目依赖的模块

      image

    • 修改控制台文件manage.py
      直接使用settings/dve.py的配置文件, 在配置中.文件名即可, 不需要后缀     os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffy.settings.dev')

      image

    • 启动按钮重新配置(不修会出问题)
      PYTHONUNBUFFERED=1; DJANGO_SETTINGS_MODULE=luffy.settings.dev

      image

    • 启动项目, 启动项目之后会生成sqlite3的数据库文件, 不需要可以删除!image
    • wsgi.py文件中配置image
    • 国际化设置(在两个配置文件中设置)
      LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/shanghai'USE_I18N = TrueUSE_L10N = TrueUSE_TZ = False
    • 创建app,默认习惯改改
      1. 先切换路径到apps目录中    PS F:\synchro\Project\luffy> cd luffy/apps2. 执行创建app命令    PS F:\synchro\Project\luffy\luffy\apps> python ../../manage.py startapp user

      image

    • 配置文件中将 BASE_DIR 与 apps的路径添加到环境变量中
      import osimport sysBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))sys.path.insert(0, BASE_DIR)sys.path.insert(1, os.path.join(BASE_DIR, 'apps'))"""BASE_DIR是配置文件的上一级上一个文件夹 项目名文件夹.将项目名文件夹与 其子目录apps 添加到环境变量中."""

      image

      环境变量的使用场景
      在导入文件的时候, 导入路径越短越好, 
      如果导入的路径中经过py文件会执行该文件, 路径过长可能会出问题(循环导入...)
      在py文件中使用绝对路径与相对路径 .与.. 导入模块的后, 该文件只能直接运行, 只能够被其他的文件调用.

      image

    • 注册app
      # app应用列表INSTALLED_APPS = [    ...    'user',  # 将apps添加到环境变量之后, 导入应用是能够直接找到user app]
  • 日志配置

    • 在dev.py中添加日志模块的配置字典(Django官网提供的)
      # 字典, 日志的配置信息LOGGING = {    # 版本    'version': 1,    # 禁用现有的记录器    'disable_existing_loggers': False,    # 日志的格式(定义两个不同的格式)    'formatters': {        # 详细的版本        'verbose': {            'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'        },        # 简单的版本        'simple': {            'format': '%(levelname)s %(module)s %(lineno)d %(message)s'        },    },    # 过滤日志    'filters': {        'require_debug_true': {            '()': 'django.utils.log.RequireDebugTrue',        },    },    # 显示    'handlers': {        # 打印到终端的日志        'console': {            # 实际开发建议使用WARNING            'level': 'DEBUG',  # 级别            'filters': ['require_debug_true'],            'class': 'logging.StreamHandler',            'formatter': 'simple'  # 使用的格式        },        # 写入到文件        'file': {            # 实际开发建议使用ERROR            'level': 'ERROR',  # 级别            'class': 'logging.handlers.RotatingFileHandler',            # 日志位置, 日志文件名, 日志保存目录必须手动创建, 注:BASE_DIR是项目名目录            'filename': os.path.join(os.path.dirname(BASE_DIR), "logs", "luffy.log"),            # 日志文件的最大值,这里我们设置300M            'maxBytes': 300 * 1024 * 1024,            # 日志文件的数量,设置最大日志数量为10            'backupCount': 10,            # 日志格式:详细格式            'formatter': 'verbose',            # 文件内容编码            'encoding': 'utf-8'        },    },    # 日志对象    'loggers': {        'django': {            # 将日志打印到终端 并 写入到文件            'handlers': ['console', 'file'],            'propagate': True,  # 是否让日志信息继续冒泡给其他的日志处理系统        },    }}
    • 在utils.py 新建logger.py模块, 模块中生成日志对象, 方便以后的调用.
      # 导入logging模块import logging# 模块通过getLogger方法拿到配置文件中日志配置字段的loggers的django配置, 生成一个logging对象log = logging.getLogger('django')
    • 在异常响应中记录日志
      # 导入日志对象from .logger import log# 记录日志    log.error(err)
  • 全局异常配置

    • 定义全局异常信息返回格式
      # 调用内置exception_handler异常处理模块处理三大认证的异常.# 调用自定义Response对象ResponseDataFormat统一返回的数据格式.from rest_framework.views import exception_handlerdef exception_response(exc, context):    # 调用内置的异常处理模块, 接收返回值    response = exception_handler(exc, context)    # 判断返回的数据是否被内部的异常模块处理过(没有处理过返回None, 处理过返回的是一个response对象, 错误提示data属性中)    if response:        data = response.date.get('detail')    else:        data = str(exc)    # 可以通过isinstance(exc, 错误类型) 对异常进行细分, 就不细分了, exc是一个错误类型的子对象    return ResponseDataFormat(code=400, msg='访问失败', data=data)
    • 在dev.py配置文件中配置全局使用的异常处理模块
      # 配置全局使用的异常处理程序REST_FRAMEWORK = {    'EXCEPTION_HANDLER': 'luffy.utils.api_response.exception_response'}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/143997.html

(0)

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!