当前位置:网站首页 > Python后端开发 > 正文

Django python后端开发_django后端开发的经验之谈

简介

持续更新中。。。。

一、安装Django环境

pip install django 

3、验证安装: 安装完成后,你可以在命令行中输入以下命令来验证Django是否成功安装:

django-admin --version 

二、创建Django项目

django-admin startproject myproject 

这将创建一个名为myproject的文件夹,创建的文件夹在cmd当前运行的目录下,其中包含Django项目的基本结构。

三、运行项目

终端命令进入项目文件夹,或在开发软件如VS CODE中启动

cd myproject python manage.py runserver 

四、创建应用程序

在Django中,应用程序是项目的组成部分,它负责处理特定功能。

python manage.py startapp myapp 

五、数据库配置

Django3.0以上原生支持mysql8.0 ,一般我们的项目都是5.7,下面介绍对5.7数据库配置支持,配置后数据库操作尽量使用python的原生方法,不要使用Django自带的方法,避免不支持造成错误。

1、安装驱动两个驱动择一:

如果选择使用 mysqlclient:

pip install mysqlclient 

如果选择使用 mysql-connector-python:

pip install mysql-connector-python 

2、配置setting.py

原生配置;

DATABASES = { 
    'default': { 
    'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_database_name', 'USER': 'your_database_user', 'PASSWORD': 'your_database_password', 'HOST': 'localhost', # 默认为 localhost,如果 MySQL 服务器在本地,否则为服务器地址 'PORT': '3306', # MySQL 默认端口 } } 
DATABASES = { 
    'default': { 
    'ENGINE': 'mysql.connector.django', 'NAME': 'your_db_name', 'USER': 'your_db_user', 'PASSWORD': 'your_db_password', 'HOST': 'your_db_host', 'PORT': '3306', } } 

六、Django内置安全机制

from django.views.decorators.csrf import csrf_exempt @csrf_exempt 

举例
在这里插入图片描述

七、雪花算法实现

Django雪花算法封装 看这里python雪花算法

八、日志记录

Django内置日志文件管理。

1、配置文件引入模块

import logging.config import os # 定义日志配置 LOGGING = { 
    'version': 1, 'disable_existing_loggers': False, 'handlers': { 
    #这里配置了两个文件用来保存日志 INFO 与 error 'file': { 
    'level': 'INFO', 'class': 'logging.FileHandler', 'filename': os.path.join(BASE_DIR, 'django.log'), }, 'file_error': { 
    'level': 'ERROR', 'class': 'logging.FileHandler', 'filename': os.path.join(BASE_DIR, 'error.log'), 'formatter': 'verbose', }, 'console': { 
    'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'verbose' }, }, 'formatters': { 
    'verbose': { 
    'format': '{levelname} {asctime} {module} {message}', 'style': '{', }, }, 'loggers': { 
    'django': { 
    'handlers': ['file', 'console','file_error'], 'level': 'INFO', 'propagate': True, }, }, } # 应用日志配置 logging.config.dictConfig(LOGGING) 

2、日志使用

import logging logger = logging.getLogger('django') def index(request): logger.error('错误日志!') logger.info('正常日志!') 

九、多数据库配置

1、配置setting.py

DATABASES = { 
    'default': { 
    'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_database_name', 'USER': 'your_database_user', 'PASSWORD': 'your_database_password', 'HOST': 'localhost', # 默认为 localhost,如果 MySQL 服务器在本地,否则为服务器地址 'PORT': '3306', # MySQL 默认端口 }, 'second_db': { 
    'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_second_db_name', 'USER': 'your_second_db_user', 'PASSWORD': 'your_second_db_password', 'HOST': 'localhost', # 默认为 localhost,如果 MySQL 服务器在本地,否则为服务器地址 'PORT': '3306', # MySQL 默认端口 } } 

2、新创建用于连接mysql的封装应用

python manage.py startapp database_utils 

3、在 Django 项目的 INSTALLED_APPS 列表中添加 database_utils 应用:

INSTALLED_APPS = [ # 其他已安装的应用 'database_utils', ] 

4、在你的 database_utils 应用中创建一个实用程序文件 utils.py,其中包含用于连接和查询多个数据库的函数:

# database_utils/utils.py import mysql.connector from mysql.connector import errorcode from django.conf import settings def get_mysql_connection(database='default'): """获取指定数据库的 MySQL 连接""" try: db_settings = settings.DATABASES[database] connection = mysql.connector.connect( user=db_settings['USER'], password=db_settings['PASSWORD'], host=db_settings['HOST'], database=db_settings['NAME'] ) return connection except mysql.connector.Error as err: if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: print(f"{ 
     database}: 用户名或密码错误") elif err.errno == errorcode.ER_BAD_DB_ERROR: print(f"{ 
     database}: 数据库不存在") else: print(f"{ 
     database}: 其他错误: { 
     err}") return None def execute_query(sql, database='default'): """在指定的数据库中执行 SQL 查询并返回结果""" connection = get_mysql_connection(database) if connection is None: return None try: cursor = connection.cursor() cursor.execute(sql) rows = cursor.fetchall() columns = [col[0] for col in cursor.description] # 获取列名 datas = [dict(zip(columns, row)) for row in rows] return datas except mysql.connector.Error as err: print(f"{ 
     database}: 执行查询时出错: { 
     err}") return None finally: cursor.close() connection.close() 

5、在其它应用中使用

from database_utils.utils import execute_query from django.http import JsonResponse def index(request): sql_default = "SELECT * FROM your_default_table" # 替换为你的实际 SQL 查询 sq_second_db= "SELECT * FROM your_secondary_table" # 替换为你的实际 SQL 查询 default_data = execute_query(sql_default, database='default') secondary_data = execute_query(sql_secondary, database='secondary') context = { 
    'default_data': default_data, 'secondary_data': secondary_data } return JsonResponse(request, 'main_app_template.html', context) 

十、数据库异常捕获优化

1、在配置默认数据后,如果数据库配置信息错误 或者 数据库失联,会造成这样的错误 非常不友好,开发环境无所谓。

在这里插入图片描述
在这里插入图片描述

2、在项目主目录 有 settings.py 的目录,创建 middleware.py

在这里插入图片描述

内容代码

# sbh_bly_api/middleware.py import logging from django.http import JsonResponse logger = logging.getLogger(__name__) class CustomExceptionMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): try: response = self.get_response(request) return response except Exception as e: code = '40' message = '服务器内部错误!' return_data = { 
   'code': code, 'message': message, 'data': []} logger.error(return_data) return JsonResponse(return_data, status=500) def process_exception(self, request, exception): code = '40' message = '服务器内部错误!' return_data = { 
   'code': code, 'message': message, 'data': []} logger.error(return_data) return JsonResponse(return_data, status=500) 
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', '项目名称.middleware.CustomExceptionMiddleware', ] 
到此这篇Django python后端开发_django后端开发的经验之谈的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • python后端开发学路线_【后端开发】Python要学哪些内容?Python程序员学习路线图..._python后端开发学路线_【后端开发】Python要学哪些内容?Python程序员学习路线图...2024-10-30 14:52:28
  • 38个基于Python的Web 开发框架_python网站开发框架2024-10-30 14:52:28
  • 做后端,php后端强,还是python后端强_php和后端的区别2024-10-30 14:52:28
  • 后端开发哪种语言有前途_后端开发哪种语言有前途的2024-10-30 14:52:28
  • 深入Python后端:构建未来的艺术与技术_深入python后端:构建未来的艺术与技术之间关系2024-10-30 14:52:28
  • Python后端开发效率提升工具推荐(一)_python后端开发项目2024-10-30 14:52:28
  • Python后端工程师面试题(附答案)终结版_python后端开发岗位2024-10-30 14:52:28
  • Python后端开发(主Django)面试题_python后端开发找工作难吗2024-10-30 14:52:28
  • Python后端学习路线_python后端教程2024-10-30 14:52:28
  • python后端开发面试题_python后端开发找工作难吗2024-10-30 14:52:28
  • 全屏图片