Python Django与MySQL整合:网站搭建实战指南
目录
环境搭建
文件准备
配置参数
调试运行
总结
环境搭建
打开conda控制面板
查看已经有的环境
创建新的环境
conda create --name MyDJP9 python=3.9
执行命令
自动安装过后使用 conda env list 产看是否ok 高亮度就是我创建的
激活环境 conda activate yourname
用pycharmd打开
这里修改刚下载的环境
点击添加
选择现有环境(他会自动识刚下载的环境)
点击确定(环境默认只有这些)(点击运用在确定)
打开命令行,创建的环境
pip install django
到这一步环境就完成了
文件准备
Django项目(文件夹项目介绍)
目录/文件 | 描述 |
---|---|
manage.py | 一个命令行工具,允许你在Django项目中执行各种管理任务。例如,运行开发服务器、创建数据库迁移等。 |
project_name/(项目根目录) | 包含了项目的设置文件和其他配置文件。名称与创建项目时指定的项目名相同。 |
– *init*.py | 标识该目录是一个Python包。通常为空或包含包初始化代码。 |
– settings.py | 包含项目的设置和配置信息,如数据库连接、静态文件路径、中间件等。 |
– urls.py | URL声明文件,即你的Django网站的“目录”。在这里定义URL模式映射到视图函数。 |
– wsgi.py | 提供WSGI兼容的Web服务器入口点,用于部署生产环境下的Django应用。 |
– asgi.py | 提供ASGI兼容的入口点,适合异步支持的Django应用部署。 |
app_name/(应用程序目录) | 每个Django项目可以包含多个应用程序。这里以单个应用为例。应用程序是实现具体功能的模块。 |
– migrations/ | 包含数据库迁移文件,这些文件描述了如何改变数据库模式以匹配模型的变化。 |
– *init*.py | 标识该目录是一个Python包。 |
– admin.py | 在此注册模型,以便它们可以在Django提供的后台管理系统中进行管理。 |
– apps.py | 应用程序的配置类,定义了应用的一些元数据。 |
– models.py | 定义数据模型,每个模型对应数据库中的一张表。 |
– views.py | 包含处理用户请求并返回响应的视图函数。视图决定了向用户展示的内容。 |
– tests.py | 单元测试文件,用于编写自动化测试来验证应用的行为是否正确。 |
– templates/(可选) | 存放HTML模板文件,用于渲染网页内容。默认情况下可能不在应用目录下,而是放在项目根目录下。 |
– static/(可选) | 存放静态文件,如CSS、JavaScript和图片等。 |
接下来配置参数
配置参数
这里参数配置有一点复杂主要是文件目录,小伙伴梦不要着急😣
配置setting
import os
from pathlib import Path # 导入Path类以正确处理路径
# 获取项目的根目录路径
BASE_DIR = Path(__file__).resolve().parent.parent
# 安全密钥,用于提供CSRF等安全功能
SECRET_KEY = 'your_secret_key_here'
# 开发模式下的调试开关,True表示开启调试模式
DEBUG = True
# 允许访问的主机地址列表,在生产环境中需要指定具体的域名或IP地址
# 当DEBUG=False时,必须设置ALLOWED_HOSTS
ALLOWED_HOSTS = ['localhost', '127.0.0.1'] # 示例:在开发环境下允许本地访问
# 安装的应用列表,这里添加了默认的Django应用和你的自定义应用(例如'studyApp')
INSTALLED_APPS = [
'django.contrib.admin', # Django管理后台
'django.contrib.auth', # 认证框架
'django.contrib.contenttypes', # 内容类型框架
'django.contrib.sessions', # 会话框架
'django.contrib.messages', # 消息框架
'django.contrib.staticfiles', # 静态文件管理
'studyApp', # 替换为你的应用名称
]
# 中间件列表,中间件是处理请求/响应过程的钩子框架
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',
]
# 根URL配置文件的路径
ROOT_URLCONF = 'studyApp.urls'
# 模板引擎配置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'], # 使用Path对象进行路径拼接
'APP_DIRS': True, # 是否在应用目录下查找模板
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
# 数据库配置,这里使用MySQL作为示例
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.mysql', # 使用MySQL数据库后端 postgresql mysql
# 'NAME': 'root', # 数据库名
# 'USER': 'root', # 数据库用户名
# 'PASSWORD': '111', # 数据库密码
# 'HOST': '127.0.0.1', # 数据库服务器地址 127.0.0.1 localhost
# 'PORT': '111', # 数据库端口 3306
# }
# }
# 密码验证器配置
AUTH_PASSWORD_VALIDATORS = [
{'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator'},
{'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator'},
{'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator'},
{'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator'},
]
# 国际化设置
LANGUAGE_CODE = 'en-us' # 默认语言代码
TIME_ZONE = 'UTC' # 默认时区
USE_I18N = True # 启用国际化支持
USE_L10N = True # 启用本地化支持
USE_TZ = True # 启用时区支持
# 静态文件(CSS、JavaScript、图片)的收集路径
STATIC_URL = '/static/' # 静态文件的URL前缀
STATIC_ROOT = BASE_DIR / 'static_root' # 收集静态文件的目录,直接使用Path对象进行路径拼接
STATICFILES_DIRS = [
BASE_DIR / "static", # 如果你想直接使用Path对象进行路径拼接
]
配置manage
#!/usr/bin/env python
# 指定使用系统中安装的Python环境来执行此脚本
import os
import sys
if __name__ == "__main__":
# 设置默认的Django设置模块为"webproject.settings"
# 这里的"webproject"应该替换为你自己的项目名称
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "webproject.settings")
try:
# 从django.core.management模块导入execute_from_command_line函数
from django.core.management import execute_from_command_line
except ImportError as exc:
# 如果无法导入Django,提示用户检查是否已安装Django以及是否激活了正确的虚拟环境
raise ImportError(
"无法导入Django。请确认它已经安装,并且在PYTHONPATH环境变量中可用。"
"你是否忘记了激活虚拟环境?"
) from exc
# 执行从命令行接收到的指令(例如:runserver, migrate等)
execute_from_command_line(sys.argv)
配置urls
# studyApp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('login/', views.login_view, name='login'),
path('register/', views.register, name='register'),
]
# webproject/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('studyApp.urls')),
]
至此已经完成了
调试运行
控制台输入命令
python manage.py runserver
访问本地端口
看见我们成功访问浏览器了
总结
遇到这个错就是数据库不兼容
django.db.utils.notsupportederror: mysql 8 or later is required (found 5.6.50).
这里小伙伴就有问题了,为什么没有配置数据库,因为数据库要求8以上我这里是5.6版本不兼容两种方法首先升级数据库,还有就是修改
找到check_database_version_supported 注释掉
# self.check_database_version_supported()检查数据库版本
这样就ok了
作者:Codition