赞
踩
前端开发:HTML、CSS、JavaScript
后端开发:Java、PHP、Python、GO
数据库:MySQL、MSSQL、Oracle、Redis
安装Django
pip install Django 或 下载.whl后 pip install D:\xxx.whl
创建Django项目
File--New Project--Django 或 命令django-admin startproject MyDjango
* manage.py 命令行工具 python manage.py help 帮助命令
* __init__.py 初始化文件,一般无须修改
* asgi.py 启动异步通信服务,如在线聊天等异步通信功能
* settings.py 项目配置文件
* urls.py 项目路由设置,设置网站的具体网址内容
* wsgi.py Python Web Server Gateway Interface Python服务器网关接口,用于Django项目在服务器上的部署和上线
查看Django版本
python import django django.__version__
创建项目应用,简称App,相当于网站功能
python manage.py startapp index
* migrations 生成数据迁移文件,自动在数据库中生成相应的数据表
* __init__.py 当前App名的初始化文件
* admin.py 设置当前App的后台管理功能
* apps.py 当前App的配置信息
* models.py 数据库的映射类,每个类关联一张数据表,实现数据的持久化,即MTV的模型
Model
* tests.py 自动化测试的模块,实现单元测试
* views.py 试图文件,处理功能的业务逻辑,即MTV中的视图View
启动项目
python manage.py runserver 8001 http://127.0.0.1:8001/
id | Int11 | 主键 |
name | Varchar100 | 商品名称 |
sizes | Varchar100 | 商品规格 |
types | Varchar100 | 商品类型 |
price | Float | 商品价格 |
discountFloat | Float | 折后价格 |
stock | Int | 存货数量 |
sold | Int | 已售数量 |
likes | Int | 收藏数量 |
created | Date | 商家日期 |
img | Varchar100 | 商品主图 |
details | Varchar100 | 商品描述 |
商品类别表 关联商品信息表的types
id | Int11 | 主键 |
firsts | Varchar100 | 一级分类 |
seconds | Varchar100 | 二级分类 |
购物车信息表
id | Int11 | 主键 |
quantity | Int11 | 购买数量 |
commodityInfos_id | Int11 | 商品信息表的主键id 商品信息表id关联comm.._id |
user_id | Int11 | Django内置用户表的主键id 关联Django内置用户表的id |
订单信息表
id | Int11 | 主键 |
price | Float11 | 订单总价 购物车信息表结算费用写入price |
created | Int11 | 订单创建时间 |
user_id | Date | Django内置用户表的主键id 关联Django内置用户表的id |
state | Varchar20 | 订单状态 |
settings.py 添加新增的文件夹,识别这些文件夹
实际开发中,需要根据实际情况对INSTALLED_APPS、MIDDLEWARE、TEMPLATES、DATABASES、STATIC_URL进行配置
完成网站的开发过程,网站上线阶段则配置属性DEBUG、ALLOWED_HOSTS
INSTALLED_APPS:识别新增的项目应用(App),新增新建的App
TEMPLATES:模板文件设置,App中创建的模板文件夹需要在配置属性DIRS中添加如'index/temp,APP_DIRS需要为True,否则无法从项目应用中查找模板文件
MIDDLEWARE:中间件的作用是处理用户请求信息和返回响应内容
DATABASES:配置数据库
"ENGINE": "django.db.backends.mysql",
# "NAME": BASE_DIR / "db.sqlite3",
"NAME": 'xxxs', # 数据库名称
'USER': 'root', # mysql用户名
'PASSWORD': 'xxx', # mysql密码
'HOST': '127.0.0.1', # 数据库主机号
'PORT': '3306', # 数据库端口
或
创建my.cnf
- [client]
- database = 数据库名称
- user = root
- password = 密码
- default-character-set = utf8
- DATABASES = {
- "default": {
- "ENGINE": "django.db.backends.mysql",
- "OPTIONS": {
- "read_default_file": "my.cnf",
- },
- }
- }
Django可以使用mysqlclient和pymysql模块实现MySQL
django--db--backends--mysql--base.py mysqlclient版本要求
如果是使用pymysql,则需要在项目名目录下__init__.py文件中写入:import pymysql pymysql.install_as_MySQLdb()
如果是使用MySQL8.0版本,加密方式需要改为原来的加密方式
ALTER USER 'root' @ 'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword'; FLUSH PRIVILEGES;
STATIC_URL进行配置:静态资源配置
- """
- Django settings for xxxs project.
- Generated by 'django-admin startproject' using Django 4.2.7.
- For more information on this file, see
- https://docs.djangoproject.com/en/4.2/topics/settings/
- For the full list of settings and their values, see
- https://docs.djangoproject.com/en/4.2/ref/settings/
- """
-
- from pathlib import Path
-
- # Build paths inside the project like this: BASE_DIR / 'subdir'.
- # 项目路径
- BASE_DIR = Path(__file__).resolve().parent.parent
-
-
- # Quick-start development settings - unsuitable for production
- # See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/
-
- # SECURITY WARNING: keep the secret key used in production secret!
- # 密钥配置
- SECRET_KEY = "xxx"
-
- # SECURITY WARNING: don't run with debug turned on in production!
- # 调试模式
- DEBUG = True
-
- # 域名访问权限
- ALLOWED_HOSTS = []
-
-
- # Application definition
- # App列表
- INSTALLED_APPS = [
- "django.contrib.admin", # 内置的后台管理系统
- "django.contrib.auth", # 内置的用户认证系统
- "django.contrib.contenttypes", # 记录项目中所有model元数据(Django的ORM框架)
- "django.contrib.sessions", # Session会话功能,用于标识当前访问用户的身份,记录相关用户信息
- "django.contrib.messages", # 消息提示功能
- "django.contrib.staticfiles", # 查找静态资源路径
- 'index',
- 'commodity',
- 'shopper',
- ]
- # 中间件 用于处理Django的请求Request和相应Response
- MIDDLEWARE = [
- "django.middleware.security.SecurityMiddleware", # 内置的安全机制,保护用户与网站的通信安全
- "django.contrib.sessions.middleware.SessionMiddleware", # 会话Session功能
- "django.middleware.common.CommonMiddleware", # 处理请求信息,规范化请求内容
- "django.middleware.csrf.CsrfViewMiddleware", # 开启CSRF防护功能
- "django.contrib.auth.middleware.AuthenticationMiddleware", # 开启内置的用户认证系统
- "django.contrib.messages.middleware.MessageMiddleware", # 开启内置的信息提示功能
- "django.middleware.clickjacking.XFrameOptionsMiddleware", # 防止恶意程序单机劫持 LocaleMiddleware:国际化和本地化功能
- ]
- # 路由入口配置 默认值是与项目同名的文件夹的urls.py文件
- ROOT_URLCONF = "xxxs.urls"
- # 模板配置 配置模板的解析引擎、模板的存放路径地址即内置功能模板使用配置信息
- TEMPLATES = [
- {
- "BACKEND": "django.template.backends.django.DjangoTemplates",
- "DIRS": [BASE_DIR / 'templates']
- ,
- "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",
- ],
- },
- },
- ]
- # WSGI配置 告诉Django如何查找WSGI文件
- WSGI_APPLICATION = "xxxs.wsgi.application"
-
- # 数据库配置
- # Database
- # https://docs.djangoproject.com/en/4.2/ref/settings/#databases
- # 配置数据库的连接信息,如连接数据库的模块、数据库名称、帐号和密码,默认连接SQLite数据库
- # django.db.backends.postgresql/mysql/sqlite3/oracle
- DATABASES = {
- "default": {
- "ENGINE": "django.db.backends.mysql",
- # "NAME": BASE_DIR / "db.sqlite3",
- "NAME": 'xxx', # 数据库名称
- 'USER': 'root', # mysql用户名
- 'PASSWORD': 'xxx', # mysql密码
- 'HOST': '127.0.0.1', # 数据库主机号
- 'PORT': '3306', # 数据库端口
- }
- }
- 或者配置成以下方式
- DATABASES = {
- "default": {
- "ENGINE": "django.db.backends.mysql",
- "OPTIONS": {
- "read_default_file": "my.cnf",
- },
- }
- }
-
-
- # Password validation
- # https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
- # 内置Auth认证的功能配置
- 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",},
- ]
-
-
- # Internationalization
- # https://docs.djangoproject.com/en/4.2/topics/i18n/
- # 国际与本地化配置 语言设置、不同时区时间的设置
- LANGUAGE_CODE = "en-us"
- LANGUAGE_CODE = "zh-hans"
-
- TIME_ZONE = "UTC"
- TIME_ZONE = "Asia/Shanghai"
-
- USE_I18N = True
-
- USE_TZ = True
-
-
- # Static files (CSS, JavaScript, Images)
- # https://docs.djangoproject.com/en/4.2/howto/static-files/
- # 静态资源配置
- STATIC_URL = "static/"
- # 添加并设置配置属性STATICFILES_DIRS
- # 静态文件加载路径 如果静态文件不和app挂钩,可以在settings.py中添加STATICFILES_DIRS,之后DTL会在这个列表的路径中查找静态文件
- STATICFILES_DIRS = (
- BASE_DIR / 'static',
- )
- # STATIC_ROOT = BASE_DIR / 'AllStatic' 该文件夹与服务器之间构建映射关系
-
- # 媒体资源配置
- MEDIA_URL = '/media/'
- MEDIA_ROOT = BASE_DIR / 'media'
-
- # Default primary key field type
- # https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
-
- DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
-
- # 发送邮件相关配置
- EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
- EMAIL_USE_TLS = True
- EMAIL_HOST = 'smtp.qq.com'
- EMAIL_PORT = 587
- EMAIL_HOST_USER = 'xxx@qq.com'
- EMAIL_HOST_PASSWORD = 'xxx' # 开启服务授权码,在邮箱的设置更改密码下方的位置进行配置,配置需要发送短信,之后获得的码输入到此处
- DEFAULT_FROM_EMAIL = 'xxx@qq.com' # 默认发送者
-
- LOGIN_URL = '/auth/login'
互联网上标准资源的地址,用于指出网站文件的路径位置
ORM框架,实现面向对象编程
models id = models.AutoField(primary_key=True)
模型字段名称 数据类型 字段属性
__str__() 设置模型的返回值
默认情况:返回值为模型名+主键
模型扩展功能
- class Meta: 设置模型的常用属性 元数据
- db_table = 指定表名
- unique_together = ('列名1', '列名2', ...) 联合约束,确定唯一记录
- ordering = ['列名1', '-列名2'] 先按列名1升序排序,再按列名2降序排序
- app_label = 指定该模型所属的应用
- abstract = True 抽象模型,不能生成数据库表结构,只能作为其他模型的父类
当模型较多时,用包Package将模型拆分进行统一管理;将models.py文件拆分为xx.py和xxx.py后,需要在__init__.py文件中导入所有模型
settings.py的DATABASES属性中配置MySQL数据库连接信息
数据迁移指令
python manage.py makemigrations 新定义的模型会在项目应用的migrations文件夹中创建新的.py文件
python manage.py migrate 执行新建到数据库操作
python manage.py migrate 应用名 0001_initial 执行某个项目应用中的某个.py文件
其他迁移指令
squashmigrations、inspectdb、showmigrations、sqlflush、sqlsequencereset、remove_stale_contenttypes
数据导入(loaddata)与导出(dumpdata)
python manage.py dumpdata>data.json
data.json项目根目录下,如果要保存到指定的文件夹下,cd到该路径后执行命令
命令行需要python xxx/xxx/manage.py dumpdata>data.json
导出项目应用commodity中所有模型数据
python manage.py dumpdata commodity>data.json
导出项目应用commodity中模型Types的数据
python manage.py dumpdata commodity.Types>types.json
导入数据
python manage.py loaddata data.json
注:数据的导入需要以整个项目或整个项目应用的数据为单位,因为存在外键关联,只导入某张表数据,需要考虑该数据表是否设有外键且外键所关联的数据表是否已有数据
从表中增加xxx_id字段,关联主表的id
xxx = models.OneToOneField(to_field=’id‘, to='table_name', on_delete=models.CASCADE, blank=True, null=True)
指向主表的id 指向主表 主表中删除一条记录,对应表也同步删除
主表的一条记录对应从表的多条记录
xxx = models.Foreignkey('主表的模型名称', on_delete=models.CASCADE) xxx_id
A表的一条记录和B表的多条记录对应,B表的一条记录和A表的多条记录对应(如:作者和图书,一个作者可以借阅多本图书,一本图书可以由多人借阅)
xxx = models.ManyToManyField(模型名, blank=True) 与模型建立多对多关系
作者信息表 多对多关联中间表 图书信息表
安装Django
pip install Django 或 下载.whl后 pip install D:\xxx.whl
创建Django项目
django-admin startproject MyDjango
查看Django版本
python import django django.__version__
创建项目应用,简称App,相当于网站功能
python manage.py startapp index
启动项目
python manage.py runserver 8001
访问地址为http://127.0.0.1:8001/
创建Django内置功能的数据表(创建新表)
python manage.py makemigrations 创建模型对应的表结构命令文件
python manage.py migrate 创建新表结构
python manage.py makemigrations 新定义的模型会在项目应用的migrations文件夹中创建新的.py文件
python manage.py migrate 执行新建到数据库操作
python manage.py migrate 应用名 0001_initial 执行某个项目应用中的某个.py文件
数据导入(loaddata)与导出(dumpdata)
python manage.py dumpdata>data.json
导出项目应用commodity中所有模型数据
python manage.py dumpdata commodity>data.json
导出项目应用commodity中模型Types的数据
python manage.py dumpdata commodity.Types>types.json
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。