首页 > 其他分享 >项目使用

项目使用

时间:2024-05-15 20:01:03浏览次数:19  
标签:项目 py 用户 django luffy 使用 日志 os

0 虚拟环境

  • 创建虚拟环境
mkvirtualenv -p python3 luffy
  • 在虚拟环境中装django
pip install django==4.2.13
django-admin startproject 项目名
  • 安装第三方模块
# drf模块
pip install djangorestframework

# pillow----处理上传的图片文件
pip install djangorestframework

1 后端项目目录结构

"""
├── luffy_api
	├── logs/				# 项目运行时/开发时日志目录 - 包
    ├── manage.py			# 脚本文件
    ├── luffy_api/      		# 项目主应用,开发时的代码保存 - 包
     	├── apps/      		# 开发者的代码保存目录,以模块[子应用]为目录保存 - 包
        ├── libs/      		# 第三方类库的保存目录[第三方组件、模块] - 包
    	├── settings/  		# 配置目录 - 包
			├── dev.py   	# 项目开发时的本地配置
			└── prod.py  	# 项目上线时的运行配置
		├── asgi.py    		# 项目上线
		├── wsgi.py    		# 项目上线用
		├── urls.py    		# 总路由
		└── utils/     		# 多个模块[子应用]的公共函数类库[自己开发的组件]
		
    └── scripts/       		# 保存项目运营时,测试的脚本文件 - 文件夹

"""

2 创建app

  • 来到目录下:
cd luffy_api\luffy_api\apps
  • 执行
python ../../manage.py startapp user

3 项目中注册app

setting.py

  • 直接写app名字,运行报错:No module named 'user'
  • 把apps目录加入到环境变量,以后注册app,只需要写名字即可
import sys, os

BASE_DIR = Path(__file__).resolve().parent.parent
apps = os.path.join(BASE_DIR, 'apps')
sys.path.insert(0, apps)
sys.path.insert(0, str(BASE_DIR))

4 以后配置文件会有多套

  • 修改manage.py 本地运行可以了
os.environ.setdefault('DJANGO_SETTINGS_MODULE','luffy_api.settings.dev')
  • 修改 asig.py wsgi.py , 如果不改,开发阶段,没有任何问题
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffy_api.settings.pro')

5 国际化

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_TZ = False   

6 数据库构建

6.1 创建luffy库,给项目使用

create database luffy default charset=utf8mb4;

6.2 查看用户

SELECT User, Host FROM mysql.user;

6.3 创建用户

  • 创建名为 'luffy' 的用户,该用户只能从本地主机(localhost)连接,并设置密码
CREATE USER 'luffy'@'localhost' IDENTIFIED BY '123456';
  • 创建名为 'luffy' 的用户,该用户可以从任何主机连接,并设置密码
CREATE USER 'luffy'@'%' IDENTIFIED BY '123456';
  • 授予 'luffy'@'localhost' 用户对名为 'luffy' 的数据库的所有权限,并且允许用户授予或撤销其他用户对数据库对象的权限
GRANT ALL PRIVILEGES ON luffy.* TO 'luffy'@'localhost' WITH GRANT OPTION;
  • 授予 'luffy'@'%' 用户对名为 'luffy' 的数据库的所有权限,并且允许用户授予或撤销其他用户对数据库对象的权限
GRANT ALL PRIVILEGES ON luffy.* TO 'luffy'@'%' WITH GRANT OPTION;

7 数据库连接

user = os.environ.get('MYSQL_USER', 'luffy')
password = os.environ.get('MYSQL_PASSWORD', '123456')
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        'NAME': 'luffy',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': user,
        'PASSWORD': password
    }
}

8 数据迁移

python manage.py makemigrations 
python manage.py migrate 

9 创建超级用户

python manage.py createsuperuser

10 日志

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': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            # 日志位置,日志文件名,日志保存目录必须手动创建,注:这里的文件路径要注意BASE_DIR代表的是小luffyapi
            '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, # 是否让日志信息继续冒泡给其他的日志处理系统
        },
    }
}
  • 写一个py文件common_logger.py
import logging
logger = logging.getLogger('django')
  • 以后不要写print了,统一用logger.info()
class LoggerView(APIView):
    def get(self,request):
        logger.info('你好')
        return Response('ok')

标签:项目,py,用户,django,luffy,使用,日志,os
From: https://www.cnblogs.com/unrealqcc/p/18194583

相关文章

  • django中使用redis
    django中使用redis方式一:通用方式pool.pyimportredisPOOL=redis.ConnectionPool(max_connections=10,decode_responses=True)在哪里用,导入用即可fromutils.poolimportPOOLimportredisclassRedisView(ViewSet):deflist(self,request):conn=......
  • Spring Boot项目,LocalDateTime参数在不同传参方式下的报错
    背景很基础的问题,只是项目中有遇到,简单记录一下两个类似的请求,一个为GET请求,普通传参方式,一个为POST请求,JSON传参,用@RequestBody接受,两者的传参是同一个对象,其中有个参数updateTime,类型为LocalDateTimeGET请求正常,POST请求会报400原因很基础的问题GET请求的参数通常通过URL......
  • webase go-sdk 简单使用
    本流程在test目录下,其中用到的 solc-0.4.25和abigen工具网上教程都比较详细,就暂时不展开聊,今天就大概描述流程。1.将目录下的test.sol文件编译pragmasolidity^0.4.25;import"./Table.sol";contracttest{stringconstantTABLE_NAME="test2";......
  • 如何让Vmware虚拟机ubuntu20.04使用物理机(windows11)下的魔法能力(浏览器及命令行下载、
    ​首先点击VMware下的“编辑”》虚拟网络编辑器,得到如图所示画面。​​​​​如果没有VMnet0就到桌面上右键VMware图标选择属性,然后如图:兼容性>以管理员身份运行此程序。然后重新打开就有了。然后桥接模式不要选择自动设置,如何选择继续往下看。在主机中cmd命令行输入:syste......
  • 使用playwright控制浏览器在服务器端将网页转化为PDF文件
    需求在实际需要中,经常存在需要在服务器端将网页转化为PDF文件保存下来。代码requirements.txt点击查看代码playwrightconvert_pdf.py点击查看代码fromplaywright.sync_apiimportsync_playwright,Playwrightimportargparsedefrun(playwright:Playwright,url......
  • MySQL存储过程中如何使用ROLLBACK
    在MySQL存储过程中,可以使用ROLLBACK来撤销之前执行的所有未提交的更改。当与BEGIN和COMMIT结合使用时,ROLLBACK可以帮助您管理事务并确保数据的完整性。以下是一个示例存储过程,它使用TRY...CATCH块来捕获异常,并在需要时执行ROLLBACK。请注意,MySQL本身并不直接支持TRY...CATCH错误......
  • 关于本小组电车充电桩项目我所想到的SWOT
    优势(Strengths)技术先进:项目可能采用了最新的充电技术,提供快速、高效的充电解决方案。用户体验:用户界面友好,便于操作,增加了用户满意度和忠诚度。网络覆盖:广泛的充电网络覆盖,便于电动车主在不同地区找到充电站。兼容性:充电桩与多种电动车型号兼容,市场适应性强。智能管理:集成智......
  • 关于使用多个平台上的测试工具请使用两种以上平台上的测试工具,并介绍
    XL-A951交直流充电桩移动式综合测试系统*功能:这是一个移动式的测试平台,可以用于非车载充电机和交流充电桩的出厂检验、到货验收和周期检定。使用:该系统支持国家标准、能源局标准、国网企标等标准的测试项目,包括计量检定、通信协议一致性测试、互操作性测试、功能性测试、安全......
  • 关于本小组项目的测试
    1、你希望不同的人物角色(有些团队有3个人物角色)如何使用你的软件?他们的需求和目标是什么,您的功能是如何协同工作来解决他们的需求的?2、本小组项目的测试矩阵是什么?是在什么平台、什么语言、什么类型的机器、什么类型浏览器等上测试您的软件?3、本小组软件项目是否需要进行测试,......
  • 使用qemu-system-x86_64和cloud-init修改qcow2镜像密码
    方法来自于:CoretutorialwithQEMU依次执行下面的命令sudoaptinstallqemu-system-x86mkdirtempcdtemp#以此镜像为例wgethttps://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.imgcat<<EOF>user-data#cloud-configpassword:123ch......