1.企业的web项目类型:
商城
门户网站[企业站和门户站]
社交网络
资讯论坛
内部系统
个人博客
内容收费站
前端的静态页面制作,外界开发的时候,是照着psd/png设计稿进行切图布局。
2. 项目各页面功能分析
3.项目架构
项目采用前后端分离的应用模式
前端使用Vue.js vue-cli
后端使用Django REST framework
mkvirtualenv luf
workon luf
pip install django
pip install PymySQL?
pip install Pillow?
pip install djangorestframework
django-admin startproject luffy
提示:
在pycharm中如果要使用已经创建好的虚拟环境,则必须设置pycharm中的python解释器,设置为
虚拟环境中的python。
/.virtualenvs/环境名称/Scripts/python.exe
1.创建数据库
create database luf default charset=utf8;
2.为当前项目创建数据库用户[这个用户只能看到这个数据库]
# root 登录mysql数据库:
create user luf_user identified by ‘luf‘; # 创建用户名和密码 #用户名 # 密码 grant all privileges on luf.* to ‘luf_user‘@‘%‘; # 给该用户分配权限,只能访问luf 库 库名 flush privileges; # mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问
3.
DATABASES = { ‘default‘: { ‘ENGINE‘: ‘django.db.backends.mysql‘, ‘NAME‘: ‘luf‘, ‘HOST‘:‘127.0.0.1‘, ‘PORT‘:3306, ‘USER‘:‘luf_user‘, ‘PASSWORD‘:‘luf‘ } }
import pymysql pymysql.install_as_MySQLdb()
如果此时启动项目出现以下错误提示时:
出现错误 : Access denied for user ‘luf_user‘@‘localhost‘ (using password: YES)
解决方案是:
用root 账号登录mysql数据库
select user,host from mysql.user # 执行这句的时候,出现了一个空用户,把空用户删掉,并刷新数据库就可以了。
删除空用户和刷新数据库
delete from mysql.user where user=‘‘;
flush privileges;
django配置文件文档:https://docs.djangoproject.com/en/2.1/ref/settings/#databases
主应用 settings.py 中
# 日志配置 LOGGING = { ‘version‘: 1, # 是否禁用其他已经存在的日志功能,False表示不禁用 ‘disable_existing_loggers‘: False, # 设置日志的输出格式 ‘formatters‘: { # 详细版日志 levelname 表示错误等级 ‘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‘, # 存储日志的目录地址和文件名[logs目录必须自己动手创建] # BASE_DIR 表示项目根目录 ‘filename‘: os.path.join(BASE_DIR, "logs/luffy.log"), # 日志文件的大小[字节],日志文件最大是300M ‘maxBytes‘: 300 * 1024 * 1024, # 日志备份数量是10个,超过会自动更新,只留下最新的10个 ‘backupCount‘: 10, ‘formatter‘: ‘verbose‘ }, }, ‘loggers‘: { ‘django‘: { ‘handlers‘: [‘console‘, ‘file‘], ‘propagate‘: True, }, } } # drf框架的配置信息 REST_FRAMEWORK = { # 异常处理 ‘EXCEPTION_HANDLER‘: ‘luffy.utils.exceptions.custom_exception_handler‘, }
1. 新建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 # python内置的日志管理器 import logging # 创建日志对象 logger = logging.Logger("luffy") # 为luffy 项目创建日志对象 def custom_exception_handler(exc,context): """自定义异常处理 exc: 发生异常时的异常对象 context: 发生异常时的上下文环境 """ response = exception_handler(exc,context) if response is None: # 当python 自带的异常处理没有处理错误时,就走到自定义的异常处理来 # 数据库错误异常捕获 view = context["view"] if isinstance(exc,DatabaseError): # 数据库出现异常了,通过日志的方式记录下来 logger.error(‘数据库报错了: [%s] %s‘ % (view, exc)) return Response("数据库报错了!请联系客服~",status=status.HTTP_507_INSUFFICIENT_STORAGE) else: return response
2. 在主应用 settings.py 中配置:
# drf框架的配置信息
REST_FRAMEWORK = {
# 异常处理
‘EXCEPTION_HANDLER‘: ‘luffy.utils.exceptions.custom_exception_handler‘,
}
原文:https://www.cnblogs.com/knighterrant/p/10573417.html