简介
持续更新中。。。。
一、安装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后端开发的经验之谈的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/hd-python/3966.html