今日内容概要

  • 二次封装Response
  • 后台数据库配置
  • user模块user表设计
  • 前台创建及配置

内容详细

补充--项目依赖模块

# 导出项目依赖模块和安装项目依赖模块
第三方模块---》导出来---》项目路径下--》requirements.txt
第三方模块名字和版本 pip freeze >requirements.txt # 会生成一个文本 内容都是模块与版本号 pip3 install -r requirements.txt # 执行后 会将文件中所有模块及指定版本装上

1、二次封装Response

# drf有个Response类
data=None, {'status':100,'msg':'成功','token':asedfasfd3a21}
status=None,
template_name=None,
headers=None,
exception=False,
content_type=None ## 代码演示:
from rest_framework.response import Response class APIResponse(Response):
def __init__(self, status=100, msg='成功', http_status=None, template_name=None, headers=None, exception=False,
content_type=None, **kwargs):
data = {
'status': status,
'msg': msg
}
if kwargs:
data.update(kwargs) # 这句话什么意思?{token:adfads,name:asdfa} super().__init__(data=data, status=http_status, template_name=template_name, headers=headers,
exception=exception, content_type=content_type) # res = APIResponse(token='asdfadsf') # -->{status:100,msg:成功,token:asdfadsf}
# res = APIResponse(result=[{}, {}, {}]) # -->{status:100,msg:成功,result:[{},{},{}]}
# res = APIResponse(status=101, msg='失败') # -->{status:101,msg:失败}
# res = APIResponse(status=101, msg='失败', http_status=201) # -->{status:101,msg:失败}

2、后台数据库配置

# 使用mysql---》创建一个库(手动)--》库名:luffy
# 项目配置文件中,连接这个数据库(Navicat创建一样) # 创建数据库,并配置
create database luffy default charset=utf8; # 给数据库创建一个普通用户,它只能操作luffy库
## 创建用户
授权账号命令:grant 权限(create, update) on 库.表 to '账号'@'host' identified by '密码'
grant all privileges on luffy.* to 'lqz'@'%' identified by 'Luffy123?';
grant all privileges on luffy.* to 'lqz'@'localhost' identified by 'Luffy123?'; ## 刷新权限
flush privileges; # 查看用户
5.7之前版本
select user,host,password from mysql.user; 5.7往后的版本
select user,host,authentication_string from mysql.user; ## 项目配置文件修改:
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# } 'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'luffy', # 数据库名字
'USER': 'lqz', # 用户名
'PASSWORD': 'Luffy123?',
'HOST': 'localhost',
'PORT': 3306
}
} ### django操作mysql
模式使用MysqlDB来操作---》MysqlDB在python3.x以后不存在了
使用pymysql替换---》django2.0.7版本及以上,如果使用pymysql替换,需要改django源码 ### 关于 pymysql和 mysqlclient的选择
通过pymysql操作数据库需要加入下面两句话:
import pymysql
pymysql.install_as_MySQLdb()
这两句话,只要执行即可,放在那里都行---》只要django执行,所有py文件中顶格写的代码都会执行 也可以直接写在配置文件中 但是需要改源码才可以运行项目 如果改源码,后期只要使用django,都要改它的源码
所以咱们换另一个操作mysql的模块 -- mysqlclient
win上安装最好不要装最新版(很可能安装失败) 可以尝试降版本安装或者参考一下博文:
http://www.liuqingzheng.top/python/%E5%85%B6%E4%BB%96/01-%E5%90%84%E4%B8%BB%E6%B5%81Linux%E7%B3%BB%E7%BB%9F%E8%A7%A3%E5%86%B3pip%E5%AE%89%E8%A3%85mysqlclient%E6%8A%A5%E9%94%99/ #### 使用mysqlclient不需要写两句话,不用改源码

3、user模块user表设计

# 用户板块---》做成app
python ../../manage.py startapp user # 创建用户表,基于auth的user表扩写
注意:在写好这个之前,不要先迁移数据,如果迁移了数据库,这个就不行了
如果你已经迁移了,删除数据库,删除所有的migrations文件,包含你自己的app,和auth和admin这两个app ### 在 models.py中:
from django.db import models
from django.contrib.auth.models import AbstractUser class User(AbstractUser):
mobile = models.CharField(max_length=11, unique=True) # 唯一,长度11
# 需要pillow包的支持 ImageField继承自FileField
icon = models.ImageField(upload_to='icon', default='icon/default.png') class Meta:
db_table = 'luffy_user'
verbose_name = '用户表'
verbose_name_plural = verbose_name def __str__(self):
return self.username ### 配置文件添加:
INSTALLED_APPS = [
'user'
] ### 把扩写了auth的user表注册一下
AUTH_USER_MODEL = 'user.User' # 配置media文件夹
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 安装pillow ,迁移数据库
pip install pillow
python manage.py makemigrations
python manage.py migrate

4、前台创建及配置

# cmd窗口创建项目:
vue create luffycity
使用pycharm打开 # 删除一些东西
### 保留 router/index.js 为:
import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/HomeView.vue' Vue.use(VueRouter) const routes = [
{
path: '/',
name: 'home',
component: HomeView
},
] const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
}) export default router ### 保留 views/HomeView.vue 为:
<template>
<div class="home">
<h1>首页</h1>
</div>
</template> <script>
export default {
name: 'HomeView',
components: {
}
}
</script> ### 保留 App.vue 为:
<template>
<div id="app">
<router-view/>
</div>
</template> ### elementui ,bootstrap,jquery,axios配置:
# axios
cnpm install axios -S ## main.js
import axios from 'axios'
Vue.prototype.$axios = axios; # elementui
cnpm install element-ui -S ## main.js
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI); # bootstrap和jq
cnpm install jquery -S
cnpm install bootstrap@3 -S ## vue.config.js
const {defineConfig} = require('@vue/cli-service')
const webpack = require("webpack")
module.exports = defineConfig({
transpileDependencies: true, configureWebpack: {
plugins: [
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery",
"window.$": "jquery",
Popper: ["popper.js", "default"]
})
]
}
}) ## main.js
import 'bootstrap'
import 'bootstrap/dist/css/bootstrap.min.css' # 全局css样式配置
## 新建:assets/css/global.css
/* 声明全局样式和项目的初始化样式 */
body, h1, h2, h3, h4, h5, h6, p, table, tr, td, ul, li, a, form, input, select, option, textarea {
margin: 0;
padding: 0;
font-size: 15px;
} a {
text-decoration: none;
color: #333;
} ul {
list-style: none;
} table {
border-collapse: collapse; /* 合并边框 */
} ## main.js
// 把自己定义的global.css 引入
import './assets/css/global.css' # 配置文件配置
## 新建:assets/js/settings.js
export default {
base_url: "http://127.0.0.1:8000"
} # main.js
// 导入自定义配置
import settings from './assets/js/settings'
Vue.prototype.$settings = settings;

项目依赖模块解决、二次封装Response、后台数据库配置、user模块user表设计、前台创建及配置的更多相关文章

  1. drf序列化高级、自定义只读只写、序列化覆盖字段、二次封装Response、数据库查询优化(断关联)、十大接口、视图家族

    目录 自定义只读 自定义只写 序列化覆盖字段 二次封装Response 数据库关系分析 断外键关联关系 ORM操作外键关系 ORM四种关联关系 基表 系列化类其他配置(了解) 十大接口 BaseSer ...

  2. 3.后台配置、环境变量、日志、异常处理、二次封装Response、路由组件

    目录 环境变量 封装logger 封装项目异常处理 二次封装Response模块 路由组件配置 环境变量 dev.py # 环境变量操作:小luffyapiBASE_DIR与apps文件夹都要添加到环 ...

  3. Django(53)二次封装Response

    前言 有时候我们使用drf的Response,会发现默认返回的格式不太友好,每次我们都需要写入以下的格式 return Response({ "status": 0, " ...

  4. DRF框架(五)——context传参,二次封装Response类,两个视图基类(APIView/GenericAPIView),视图扩展类(mixins),子类视图(工具视图),视图集(viewsets),工具视图集

    复习 1.整体修改与局部修改 # 序列化get (给前端传递参数) #查询 ser_obj = ModelSerializer(model_obj) #只传递一个参数,默认是instance的参数,查 ...

  5. 二次封装Response类 | 视图类传递参数给序列化类context

    二次封装Response类 源码: class Response(SimpleTemplateResponse): """ An HttpResponse that al ...

  6. 【maven】maven查看项目依赖并解决依赖冲突的问题

    一.问题 项目开发过程中,经常会遇到jar冲突,然后maven根据自己的规则进行冲突解决,导致项目在运行的过程中报错. 1.maven自动解决依赖冲突的规则是什么? 2.如何查看当前项目的maven的 ...

  7. sell 项目 订单详情表 设计 及 创建

    1.数据库设计 2.订单详情表 创建 /** * 订单详情表 */ create table `order_detail` ( `detail_id` varchar(32) not null, `o ...

  8. sell 项目 订单表 设计 及 创建

    1.数据库设计 2.订单表 创建 /** * 订单表 */ create table `order_master` ( `order_id` varchar(32) not null, `buyer_ ...

  9. sell 项目 类目表 设计 及 创建

    1.数据库设计 2.类目表 创建 /** * 类目表 */ create table `product_category` ( `category_id` int not null auto_incr ...

随机推荐

  1. bzoj4032/luoguP4112 [HEOI2015]最短不公共子串(后缀自动机+序列自动机上dp)

    bzoj4032/luoguP4112 [HEOI2015]最短不公共子串(后缀自动机+序列自动机上dp) bzoj Luogu 题解时间 给两个小写字母串 $ A $ , $ B $ ,请你计算: ...

  2. 【原创】浅谈指针(十一)alloca函数

    前言 好几天没写了,最近网课,事情也比较多,今天多写点东西. 目录 前言 alloca函数 1.简介 2.反汇编看alloca 3.手工调用alloca函数 4.注意事项 alloca函数 1.简介 ...

  3. Spring Authorization Server 0.2.3发布,放出联合身份DEMO

    很快啊Spring Authorization Server又发新版本了,现在的版本是0.2.3.本次都有什么改动呢?我们来了解一下. 0.2.3版本特性 本次更新的新特性不少. 为公开客户端提供默认 ...

  4. (转)Linux的文件权限与目录配置

    ref:https://www.cnblogs.com/ysocean/p/7712412.html#_label1_0 (转)Linux文件权限和目录配置 1.Linux命令的普遍语法格式 命令格式 ...

  5. 如何使用 Spring Boot 实现异常处理?

    Spring 提供了一种使用 ControllerAdvice 处理异常的非常有用的方法. 我们通过实现一个 ControlerAdvice 类,来处理控制器类抛出的所有异常.

  6. Files的常用方法都有哪些?

    Files. exists():检测文件路径是否存在.Files. createFile():创建文件.Files. createDirectory():创建文件夹.Files. delete():删 ...

  7. mybatis中jdbcType和javaType

    1.MyBatis 通过包含的jdbcType类型 BIT.FLOAT.CHAR .TIMESTAMP . OTHER .UNDEFINEDTINYINT .REAL .VARCHAR .BINARY ...

  8. 如何通过HibernateDaoSupport将Spring和Hibernate结合起来?

    用Spring的 SessionFactory 调用 LocalSessionFactory.集成过程分三步: 配置the Hibernate SessionFactory. 继承HibernateD ...

  9. Error 和 Exception 有什么区别?

    Error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情 况下的一种严重问题:比如内存溢出,不可能指望程序能处理这样的情况: Exception 表示需要捕捉或者需要程序进行处理 ...

  10. 在 Java 中 Executor 和 Executors 的区别?

    Executors 工具类的不同方法按照我们的需求创建了不同的线程池,来满足业务 的需求. Executor 接口对象能执行我们的线程任务. ExecutorService 接口继承了 Executo ...