• DAY 77 luffy01


    1 pip换源
    2 虚拟环境(配置:新机器配一次)
    workon 虚拟环境名字
       mkvirtualenv -p python3 虚拟环境名称
       deactivate
    3 项目目录调整
    """
    ├── luffyapi
    ├── logs/ # 项目运行时/开发时日志目录 - 包
      ├── manage.py # 脚本文件
      ├── luffyapi/     # 项目主应用,开发时的代码保存 - 包
        ├── apps/     # 开发者的代码保存目录,以模块[子应用]为目录保存 - 包
          ├── libs/     # 第三方类库的保存目录[第三方组件、模块] - 包
      ├── settings/ # 配置目录 - 包
    ├── dev.py   # 项目开发时的本地配置
    └── prod.py # 项目上线时的运行配置
    ├── urls.py   # 总路由
    └── utils/     # 多个模块[子应用]的公共函数类库[自己开发的组件]
      └── scripts/       # 保存项目运营时的脚本文件 - 文件夹
    """

    # 整个项目的启动是依据配置文件启动
    # 如果把某个路径加入了环境变量
    # 再导入包,直接从环境变量开始导起

     

    1 项目生成requirements.txt

    1 项目的依赖,以后标准,每个项目都必须有,包括脚本项目
    2 直接手写requirements.txt,放在项目根路径下
    3 自动生成
    -pip3 freeze >requirements.txt

     

    2 后台本地化配置

    # 在配置文件中改
    LANGUAGE_CODE = 'zh-hans'

    TIME_ZONE = 'Asia/shanghai'

    USE_I18N = True

    USE_L10N = True

    USE_TZ = False

     

    3 数据库配置

    1 使用mysql数据库,建一个库,给开发人员分配一个开发用户
    2 创建luffy库
    -使用navicate创建库
       -使用命令
      -create database luffy default charset=utf8;
           
           
    3 创建用户,授予权限
    -查看有那些用户
       select user,host,password from mysql.user;
       -创建luffy用户,授予luffy库的所有权限
    # 授权账号命令:grant 权限(create, update) on 库.表 to '账号'@'host' identified by '密码'
       grant all privileges on luffy.* to 'luffy'@'%' identified by 'Luffy123?';
       grant all privileges on luffy.* to 'luffy'@'localhost' identified by 'Luffy123?';
       flush privileges;
       
       
    4 django配置
    -在配置文件中配置
           'default': {
           'ENGINE': 'django.db.backends.mysql',
           'NAME': 'luffy',
           'USER': 'luffy',
           'PASSWORD': 'Luffy123?',
           'HOST': 'localhost',
           'PORT': 3306
      }
       -密码容易被人看到(写到环境变量中)
       password=os.getenv('db_password','Luffy123?')
       print(password)
       DATABASES = {
           # }
           'default': {
               'ENGINE': 'django.db.backends.mysql',
               'NAME': 'luffy',
               'USER': 'luffy',
               'PASSWORD': password,
               'HOST': 'localhost',
               'PORT': 3306
          }
      }
       
    5 安装pymysql,或者是mysqlclient
    -运气好:一把装好就用mysqlclient
      -pip3 install mysqlclient
      -或者使用pymysql(django版本超过2.0.7,需要改源码)
      -在配置文件中加入
           import pymysql
    pymysql.install_as_MySQLdb()

     

    4 User表编写,开启media

    http://www.liuqingzheng.top/python/%E8%B7%AF%E9%A3%9E%E9%A1%B9%E7%9B%AE/1-%E9%A1%B9%E7%9B%AE%E5%9F%BA%E7%A1%80/6-user%E6%A8%A1%E5%9D%97User%E8%A1%A8/

     

    5 前台项目创建及配置

    1 vue create luffycity
    2 使用pycharm打开
    3 项目配置:
    -element-ui(样式)
       -axios(请求)
       -vue-router(路由)
       -vuex (状态管理器)
       
       
       -vue-cookies
       -vue-video(暂时没装)
       -bootstarp(咱们不用)
       -jq(咱们也不用)
       
    4 vue-router组件(单页面开发,组件之间跳转)
    -在根组件App.vue中加入
      <router-view/>
    -在router下的index.js中配置路径
          {
           path: '/',
           name: 'Home',
           component: Home
      }
       -在浏览器里输入相应的路径,就能显示相应的组件
       -在页面中跳转
       <router-link to="/">Home</router-link>
       


    5 使用element-ui
    -cnpm install  element-ui --save
       -在main.js中配置
       import ElementUI from 'element-ui';
    import 'element-ui/lib/theme-chalk/index.css';
       Vue.use(ElementUI);
       -在官方文档找到好看的组件,之间把html,css,js拷入自己项目即可

    6 使用axios
    -cnpm install  axios --save
       -main.js配置
       import axios from 'axios'
    Vue.prototype.$http=axios
       -以后在组件中直接
      this.$http.get().then(res=>{})
    7 使用vue-cookies(js操作cookie)
    -cnpm install vue-cookies -S
       -main.js配置
       import cookies from 'vue-cookies'
    Vue.prototype.$cookies = cookies;
    -在组件中使用
       this.$cookies.set('token','asdfasdf')
    8 使用bootstrap,jq
    -安装
    cnpm install jquery
    cnpm install bootstrap@3
       -main.js中配置
       import 'bootstrap'
    import 'bootstrap/dist/css/bootstrap.min.css'
    -在项目根路径创建vue.config.js,写入
           const webpack = require("webpack");
           module.exports = {
               configureWebpack: {
                   plugins: [
                       new webpack.ProvidePlugin({
                           $: "jquery",
                           jQuery: "jquery",
                           "window.jQuery": "jquery",
                           "window.$": "jquery",
                           Popper: ["popper.js", "default"]
                      })
                  ]
              }
          };

    6 跨域问题

    https://www.cnblogs.com/liuqingzheng/articles/9794285.html
       
    1 浏览器的同源策略(浏览器最基本的安全策略)
    -只能接收相同域(地址+端口)返回的数据
    2 向不同域发请求,就会出现跨域问题(浏览器阻止了)
    -CORS(跨域资源共享:后端技术),主流采用的方案
       -前端代理(只能在测试阶段使用)
       -jsonp:只能解决get请求跨域,本质原理使用了某些标签不限制跨域
       
    3 跨域
    -简单请求:简单请求只发一次
       -非简单请求:发送两次,第一次是options请求,第二次是真正的请求
       
       -只要满足以下,就是简单请求
       (1) 请求方法是以下三种方法之一:
           HEAD
           GET
           POST
        (2)HTTP的头信息不超出以下几种字段:
           Accept
           Accept-Language
           Content-Language
           Last-Event-ID
           Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain
    4 解决跨域问题
    -简单请求:
      在响应头中添加
       -非简单请求需要判断是否是options请求
    5 解决方案:在中间件中写,(不要忘了注册)
    class CORSMiddleWare(MiddlewareMixin):
       def process_response(self, request, response):
           if request.method == 'OPTIONS':
               response['Access-Control-Allow-Headers'] = '*'
           response['Access-Control-Allow-Origin'] = '*'

           return response
       
       
    6 第三方已经写好了,直接安装,配置即可
    -1 安装pip install django-cors-headers

       -2 在app中注册
      'corsheaders',
       -3 在中间件注册
      'corsheaders.middleware.CorsMiddleware',
       -4 在配置文件中写
      CORS_ALLOW_CREDENTIALS = True
           CORS_ORIGIN_ALLOW_ALL = True

           CORS_ALLOW_METHODS = (
               'DELETE',
               'GET',
               'OPTIONS',
               'PATCH',
               'POST',
               'PUT',
          )

           CORS_ALLOW_HEADERS = (
               'authorization',
               'content-type',

          )
       
           

    补充

    1 反向生成models
    python manage.py inspectdb > models.py
  • 相关阅读:
    Apache Kafka源码分析
    Apache Kafka源码分析
    Apache Kafka源码分析
    Apache Kafka源码分析
    如何保障流式处理的数据一致性
    Tuning Spark
    Java内存管理和垃圾回收
    Spark MLlib
    Win7系统与它的Virtualbox中安装的Ubuntu14.04共享信息的几种方法
    图片流量节省大杀器:基于CDN的sharpP自适应图片技术实践
  • 原文地址:https://www.cnblogs.com/DEJAVU888/p/14893873.html
Copyright © 2020-2023  润新知