zoukankan      html  css  js  c++  java
  • luffy--01

    1. 项目开发基础概念

    1.1 企业的web项目类型

    1. 商城

      1.1 B2C 直销商城 商家与会员直接交易 ( Business To Customer )

      1.2 B2B 批发商城 商家与商家直接交易

      1.3 B2B2C 购物平台 商家和会员在另一个商家提供的平台上面进行交易

      1.4 C2B 定制商城 会员向商家发起定制商品的需求,商家去完成。

      1.5 O2O 线上线下交易平台

      1.6 C2C 二手交易平台

    2. 门户网站[企业站和门户站]

    3. 社交网络

    4. 资讯论坛

    5. 内部系统

    6. 个人博客

    7. 内容收费站

    3. 环境搭建

    3.1 创建虚拟环境

    mkvirtualenv luffy
    
    or
    
    mkvirtualenv luffy -p python3 # 指定python版本
    # 其他相关命令
    
    创建虚拟环境:               mkvirtualenv 虚拟环境名称
    创建虚拟环境(指定python版本): mkvirtualenv -p python3 虚拟环境名称
    查看所有虚拟环境:            workon+2次tab键
    使用虚拟环境:               workon 虚拟环境名称
    退出虚拟环境:               deactivate
    删除虚拟环境(必须先退出虚拟环境内部才能删除当前虚拟环境):
                                   rmvirtualenv 虚拟环境名称
        
    其他相关命令:
    查看虚拟环境中安装的包:              pip freeze  或者 pip list
    收集当前环境中安装的包及其版本:       pip freeze > requirements.txt
    在部署项目的服务器中安装项目使用的模块: pip install -r requirements.txt

    3.3 依赖包安装

    pip install django
    
    pip install djangorestframework
    
    pip install PymySQL
    
    pip install Pillow
    
    pip install django-redis

    4. 搭建项目

    4.1 创建项目

    django-admin startproject luffy

    4.3 打开项目

    在pycharm中打开项目

    settings里面添加虚拟环境,启动django,设置runserver

    4.2 调整目录

    ├── docs/          # 项目相关资料保存目录
    ├── logs/          # 项目运行时/开发时日志目录
    ├── manage.py
    ├── luffy/         # 项目主应用,开发时的代码保存
    │   ├── apps/      # 开发者的代码保存目录,以模块[子应用]为目录保存
    │   ├── libs/      # 第三方类库的保存目录[第三方组件、模块]
    │   ├── settings/
    │       ├── dev.py   # 项目开发时的本地配置
    │       ├── prop.py  # 项目上线时的运行配置
    │   ├── urls.py    # 总路由
    │   ├── utils/     # 多个模块[子应用]的公共函数类库[自己开发的组件]
    └── scripts/       # 保存项目运营时的脚本文件

    4.3 创建代码版本

    cd进入到自己希望存储代码的目录路径,并创建本地仓库.git

     新创建的本地仓库.git是个空仓库

    cd 目录路径
    git init

    4.3.1 配置用户名和邮箱

    git config --global user.name "拾玥"
    git config --global user.email "724979830@qq.com"

    4.4 在git平台创建工程

    创建私有仓库

     2)克隆项目到本地

    git clone https://gitee.com/shiony/luffy.git

    # 注意,如果当前目录下出现git仓库同名目录时,会克隆失败。

    注意:
    我们当前项目不需要这个步骤
    这个步骤是 当以后我们进入公司里面,参与人家已经在做的项目时,别人已经有仓库了,但是我们是新人加入项目中的,那么我们不需要在自己本地进行git init,直接git clone 复制别人的仓库代码

     git提交

    git add 代码目录   # 添加代码到上传队列
    git status        # 查看当前项目的版本状态
    git commit -m '添加项目代码'  # 提交代码到本地仓库, -m 表示本次提交的描述

    推送到远端

    git push origin dev:dev

    如果推送代码,出现以下提示: git pull ....,则表示当前本地的代码和线上的代码版本不同.

    1. 把线上的代码执行以下命令,拉取到本地,进行同步
    git pull
    
    2. 根据提示,移除多余的冲突的文件,也可以删除.
    完成这些步骤以后,再次add,commit,push即可.

    接下来,我们就把上面创建好的本地项目提交到gitee码云上面

    # .表示当前目录下所有的文件或目录提交到上传队列[上传队列也叫"暂存区"]
    git add .
    
    # 把本地上传队列的代码提交到本地仓库
    git commit -m "项目初始化搭建"
    
    # 给本地的git版本控制软件设置项目的远程仓库地址
    git remote add origin https://gitee.com/mooluo/luffyproject.git
    
    # 提交代码给远程仓库
    git push -u origin master

    # 输入账号,密码
    扩展:
    1. 通过 git status 可以查看当前项目的代码版本状态
    2. 通过 git reflog 可以查看代码版本日志[简单格式]
    3. 通过 git log    可以查看代码版本日志[详细格式]

    上面虽然成功移交了代码版本,但是一些不需要的文件也被提交上去了。

    所以,我们针对一些不需要的文件,可以选择从代码版本中删除,并且使用.gitignore把这些垃圾文件过滤掉。

    git rm 文件  # 删除单个文件
    git rm -rf 目录  # 递归删除目录
    
    # 以下操作建议通过ubuntu的终端来完成,不要使用pycharm提供,否则删除.idea还会继续生成。
    git rm -rf .idea
    git rm db.sqlite3
    # 注意,上面的操作只是从项目的源代码中删除,但是git是不知情的,所以我们需要同步。
    git add .
    git commit -m "删除不必要的文件或目录"
    git push -u origin master

    使用.gitignore把一些垃圾文件过滤掉。

    vim .gitignore
    
    ./idea
    ./idea/*
    ./git
    ./db.sqlite3

    4.6 日志配置

    在settings/dev.py文件中追加如下配置

    # 日志配置
    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': {
                'level': 'DEBUG',
                'filters': ['require_debug_true'],
                'class': 'logging.StreamHandler',
                'formatter': 'simple'
            },
            'file': {
                'level': 'INFO',
                'class': 'logging.handlers.RotatingFileHandler',
                # 日志位置,日志文件名,日志保存目录必须手动创建
                'filename': os.path.join(os.path.dirname(BASE_DIR), "logs/luffy.log"),
                # 日志文件的最大值,这里我们设置300M
                'maxBytes': 300 * 1024 * 1024,
                # 日志文件的数量,设置最大日志数量为10
                'backupCount': 10,
                # 日志格式:详细格式
                'formatter': 'verbose'
            },
        },
        # 日志对象
        'loggers': {
            'luffy': {
                'handlers': ['console', 'file'],
                'propagate': True, # 是否让日志信息继续冒泡给其他的日志处理系统
            },
        }
    }

    4.5 异常处理

    新建utils/exceptions.py

    from rest_framework.views import exception_handler
    
    from django.db import DatabaseError
    from rest_framework.response import Response
    from rest_framework import status
    
    import logging
    logger = logging.getLogger('luffy')
    
    
    def custom_exception_handler(exc, context):
        """
        自定义异常处理
        :param exc: 异常类
        :param context: 抛出异常的上下文
        :return: Response响应对象
        """
        # 调用drf框架原生的异常处理方法
        response = exception_handler(exc, context)
    
        if response is None:
            view = context['view']
            if isinstance(exc, DatabaseError):
                # 数据库异常
                logger.error('[%s] %s' % (view, exc))
                response = Response({'message': '服务器内部错误'}, status=status.HTTP_507_INSUFFICIENT_STORAGE)
    
        return response

    settings.py配置文件中添加

    REST_FRAMEWORK = {
        # 异常处理
        'EXCEPTION_HANDLER': 'luffy.utils.exceptions.custom_exception_handler',
    }

    4.7 创建数据库

    create database luffycity default charset=utf8;

    为当前项目创建数据库用户[这个用户只能看到这个数据库

    create user luffy_user identified by 'luffy';
    grant all privileges on luffycity.* to 'luffy_user'@'%';
    flush privileges;

    4.8 配置数据库连接

    打开settings/dev.py文件,并配置

    DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "HOST": "127.0.0.1",
            "PORT": 3306,
            "USER": "luffy_user",
            "PASSWORD": "luffy",
            "NAME": "luffycity",
        }
    }

    在项目主模块的 __init__.py中导入pymysql

    import pymysql
    
    pymysql.install_as_MySQLdb()

     

     

     

  • 相关阅读:
    最小生成树问题-prim算法求解
    排序算法7---快速排序算法
    IOS工作笔记(九)
    NSUserDefaults的一些用法
    UIActionSheet的简单使用
    如何处理过多使用懒加载的问题?
    prefix.pch文件的一些简单使用
    IOS工作笔记(八)
    登录时本地保存账号密码及关闭ARC的方法
    IOS页面跳转的方法
  • 原文地址:https://www.cnblogs.com/echo2019/p/10841048.html
Copyright © 2011-2022 走看看