Django搭建项目开发环境
(一).创建Django项目 - babies
1.django-admin startproject babies
1.2.创建文件夹
1.3 方法一:直接找到该目录右击新建文件夹
方法二:在Pycharm创建如下图
(二)新建应用 - index
2.1 在终端窗口下执行命令:python manage.py startapp index
(三)创建应用 - commodity
3.1 在终端窗口下执行命令:python manage.py startapp commodity
(四)创建应用 - shopper
4.1 在终端窗口下执行命令: python manage.py startapp shopper
(五)项目目录结构图
5.1整个项目共有7
个文件夹和1
个文件
1、babies文件夹
babies文件夹与项目名相同,该文件夹下含有文件init .py、asgi.py、settings.py、urls.py和 wsgi.py
2、commodity文件夹
commodity是Django创建的应用(功能模块),文件夹里含有init.py、 admin.py、apps.py、models.py、tests.py和views.py文件,它主要实现网站的商品列表页和商品详细页。
3、index文件夹
index是Django创建的应用(功能模块),文件夹含有的文件与应用commodity相同,主要实现网站首页。
4、media文件夹
media是网站的媒体资源,用于存放商品的主图和详细介绍图。
5、pstatic文件夹
pstatic是网站的静态资源,用于存放网站的静态资源文件,如CSS、JavaScript、网站界面图片、前端框架(LayUI、BootStrap……)。
6、shopper文件夹
shopper也是Django创建的应用(功能模块),主要实现网站的购物车页面、个人中心页面、用户登录注册页面、在线支付功能等。
7、templates文件夹
templates用于存放HTML模板文件,即网站的网页文件。
8、manage.py文件
manage.py是项目的命令行工具,内置多种方法与项目进行交互。在命令提示符窗口下,将路径切换到项目babies并输入python manage.py help,可以查看该工具的指令信息。
-由于文件夹media
,pstatic
是我们自行创建的,templates
是系统自动创建的,还需要在这些文件夹中添加前端提供的HTML静态模板。
-
【网站Web静态模版】下载链接:百度网盘 请输入提取码 提取码:lrqw
-
至此,完成项目babies的整体架构搭建
(1)创建Django项目,并在新建的项目下创建相应的应用(功能模块)
(2)根据前端提供的HTML静态模板,分别创建文件夹media、pstatic,并将HTML静态模板的CSS、JavaScript和HTML文件分别放置在文件夹pstatic和templates -
(六)项目配置文件 - settings.py
6.1 在babies
目录下的项目配置文件
- 由于文件夹media、pstatic是我们自行创建的,Django在运行中无法识别这些文件夹的具体作用,因此,我们还需要在Django的配置文件
settings.py
中添加这些文件夹,使Django在运行中能识别这些文件夹的作用。
6.1.1 查看settings.py默认设置
-
import os
-
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.0/howto/deployment/checklist/
-
-
# SECURITY WARNING: keep the secret key used in production secret!
-
SECRET_KEY = 'django-insecure-mzvamcbvrjs71z#gdh4ah2=$*zh8!-4$tt^dopui@v65dgj7!w'
-
-
# SECURITY WARNING: don't run with debug turned on in production!
-
DEBUG = True
-
-
ALLOWED_HOSTS = []
-
-
-
# Application definition
-
-
INSTALLED_APPS = [
-
'django.contrib.admin',
-
'django.contrib.auth',
-
'django.contrib.contenttypes',
-
'django.contrib.sessions',
-
'django.contrib.messages',
-
'django.contrib.staticfiles',
-
]
-
-
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',
-
]
-
-
ROOT_URLCONF = 'babies.urls'
-
-
TEMPLATES = [
-
{
-
'BACKEND': 'django.template.backends.django.DjangoTemplates',
-
'DIRS': [],
-
'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_APPLICATION = 'babies.wsgi.application'
-
-
-
# Database
-
# https://docs.djangoproject.com/en/4.0/ref/settings/#databases
-
-
DATABASES = {
-
'default': {
-
'ENGINE': 'django.db.backends.sqlite3',
-
'NAME': BASE_DIR / 'db.sqlite3',
-
}
-
}
-
-
-
# Password validation
-
# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators
-
-
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.0/topics/i18n/
-
-
LANGUAGE_CODE = 'en-us'
-
-
TIME_ZONE = 'UTC'
-
-
USE_I18N = True
-
-
USE_TZ = True
-
-
-
# Static files (CSS, JavaScript, Images)
-
# https://docs.djangoproject.com/en/4.0/howto/static-files/
-
-
STATIC_URL = 'static/'
-
-
# Default primary key field type
-
# https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field
-
-
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
上述代码列出了13个配置信息,每个配置信息的说明如下:
(1)项目路径BASE_DIR:主要通过os模块读取当前项目在计算机系统的具体路径,该代码在创建项目时自动生成,一般情况下无须修改。
(2)密钥配置SECRET_KEY:这是一个随机值,在项目创建的时候自动生成,一般情况下无须修改。主要用于重要数据的加密处理,提高项目的安全性,避免遭到攻击者恶意破坏。密钥主要用于用户密码、CSRF机制和会话Session等数据加密。
– 用户密码:Django内置一套Auth认证系统,该系统具有用户认证和存储用户信息等功能,在创建用户的时候,将用户密码通过密钥进行加密处理,保证用户的安全性。
– CSRF机制:该机制主要用于表单提交,防止窃取网站的用户信息来制造恶意请求。
– 会话Session:Session的信息存放在Cookie中,以一串随机的字符串表示,用于标识当前访问网站的用户身份,记录相关用户信息。
(3)调试模式DEBUG:该值为布尔类型。如果在开发调试阶段,那么应设置为True,在开发调试过程中会自动检测代码是否发生更改,根据检测结果执行是否刷新重启系统。如果项目部署上线,那么应将其改为False,否则会泄漏项目的相关信息。
(4)域名访问权限ALLOWED_HOSTS:设置可访问的域名,默认值为空列表。当DEBUG为True并且ALLOWED_HOSTS为空列表时,项目只允许以localhost或127.0.0.1在浏览器上访问。当DEBUG为False时,ALLOWED_HOSTS为必填项,否则程序无法启动,如果想允许所有域名访问,可设置ALLOW_HOSTS = ['*']。
(5)APP列表INSTALLED_APPS:告诉Django有哪些APP已经注册。在项目创建时已有admin、auth和sessions等配置信息,这些都是Django内置的应用功能。
– admin:内置的后台管理系统。
– auth:内置的用户认证系统。
– contenttypes:记录项目中所有model元数据(Django的ORM框架)。
– sessions:Session会话功能,用于标识当前访问网站的用户身份,记录相关用户信息。
– messages:消息提示功能。
– staticfiles:查找静态资源路径。
(6)中间件MIDDLEWARE:这是一个用来处理Django的请求(Request)和响应(Response)的框架级别的钩子,它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。
(7)路由入口设置ROOT_URLCONF:告诉Django从哪个文件查找整个项目的路由信息(路由信息即我们定义的网址信息),默认值是与项目同名的文件夹的urls.py文件,即babies文件夹的urls.py。
(8)模板配置TEMPLATES:主要配置模板的解析引擎、模板的存放路径地址以及Django内置功能的模板使用配置信息。
(9)WSGI配置WSGI_APPLICATION:告诉Django如何查找WSGI文件,并从WSGI文件启动并运行Django系统服务,默认值是与项目同名的文件夹的wsgi.py文件,即babys文件夹的wsgi.py。
(10)数据库配置DATABASES:配置数据的连接信息,如连接数据库的模块、数据库名称、数据库的账号密码等,默认连接sqlite数据库。
(11)内置Auth认证的功能配置AUTH_PASSWORD_VALIDATORS:主要实现Django的Auth认证系统的内置功能。
(12)国际化与本地化配置:包含配置属性LANGUAGE_CODE、TIME_ZONE、USE_I18N、USE_L10N、USE_TZ,主要实现网站的语言设置、不同时区的时间设置等。
(13)静态资源配置STATIC_URL:设置静态文件的路径信息。
在网站开发阶段中,我们经常对配置文件settings.py的INSTALLED_APPS、MIDDLEWARE、TEMPLATES、DATABASES和STATIC_URL进行配置,从而完成网站的开发过程,而配置属性DEBUG和ALLOWED_HOSTS则用于网站上线阶段。
在开发阶段,DEBUG设置为False,ALLOWED_HOSTS设置为[],只允许本机(localhost或127.0.0.1)访问
在上线阶段,DEBUG设置为True,ALLOWED_HOSTS不能为[],否则无法正常运行。如果设置为['*'],表明网站允许所有用户来访问
上述配置属性是Django默认的功能配置,在实际开发中,可根据实际情况适当添加或删除相应的功能配置。
6.2 在配置文件里注册应用
6.2.1 在项目babies添加了应用(功能模块)index、commodity和shopper,但Django在运行过程中依然无法识别新增的应用(功能模块),因此还需在Django的配置文件settings.py里注册。
在列表INSTALLED_APPS分别添加index、commodity和shopper元素
如有需要可直接复制以下代码:
-
INSTALLED_APPS = [
-
'django.contrib.admin',
-
'django.contrib.auth',
-
'django.contrib.contenttypes',
-
'django.contrib.sessions',
-
'django.contrib.messages',
-
'django.contrib.staticfiles',
-
'index',
-
'commodity',
-
'shopper'
-
]
6.3 设置模板信息
6.3.1 在Web开发中,模板是一种较为特殊的HTML文档。这个HTML文档嵌入了一些能够让Django识别的变量和指令,然后由Django的模板引擎解析这些变量和指令,生成完整的HTML网页并返回给用户浏览。模板是Django里面的MTV框架模式的T部分,配置模板路径是为了告诉Django在解析模板时,如何找到模板所在的位置。
一般情况下,项目的根目录文件夹templates通常存放共用的模板文件,能为各个App的模板文件调用,这个模式符合代码重复使用的原则。在项目babies创建了文件夹templates,它是用来存放Django模板文件的,在配置文件settings.py的配置属性TEMPLATES添加文件夹templates。
如果是命令行创建的项目,由于没有templates文件夹,该配置文件中也无相关配置,需要做以下标出部分的配置,如果是使用PyCharm向导生成的项目,该配置已经完成,不用再手动配置。
如有需要可直接复制以下代码:
-
TEMPLATES = [
-
{
-
'BACKEND': 'django.template.backends.django.DjangoTemplates',
-
'DIRS': [os.path.join(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',
-
],
-
},
-
},
-
]
模板配置以列表格式表示,每个元素具有不同的含义
– BACKEND:定义模板引擎,用于识别模板里面的变量和指令。内置的模板引擎有Django Templates和jinja2.Jinja2,每个模板引擎都有自己的变量和指令语法。
– DIRS:设置模板所在的路径,告诉Django在哪个地方查找模板的位置,默认为空列表。
– APP_DIRS:是否在App里查找模板文件。
– OPTIONS:用于填充在RequestContext的上下文(模板里面的变量和指令),一般情况下不做任何修改。
模板文件夹也可以在应用(功能)里面创建,比如在应用index中创建模板文件夹temps,那么在TEMPLATES的配置属性DIRS添加os.path.join(BASE_DIR, 'index/temps'),其中index/temps代表应用index的模板文件夹temps;并且配置属性APP_DIRS必须设置为True,否则Django无法从项目应用中查找模板文件。
6.3.2 添加中间件
中间件(Middleware)是一个用来处理Django请求(Request)和响应(Response)的框架级别的钩子,它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。
当用户在网站中进行某个操作时,这个过程是用户向网站发送HTTP请求(Request),而网站会根据用户的操作返回相关的网页内容,这个过程称为响应处理(Response)。从请求到响应的过程中,当Django接收到用户的请求时,首先经过中间件处理请求信息,执行相关的处理,然后将处理结果返回给用户。中间件的执行流程如下图所示。
从上图中能清晰地看到,中间件的作用是处理用户请求信息和返回响应内容。开发者可以根据自己的开发需求自定义中间件,只要将自定义的中间件添加到配置属性MIDDLEWARE中即可激活。
一般情况下,Django默认的中间件配置均可满足大部分的开发需求。我们在项目的MIDDLEWARE中添加LocaleMiddleware中间件,使得Django内置的功能支持中文显示,代码如下:
如有需要可直接复制以下代码:
-
MIDDLEWARE = [
-
'django.middleware.security.SecurityMiddleware',
-
'django.contrib.sessions.middleware.SessionMiddleware',
-
'django.middleware.locale.LocaleMiddleware',
-
'django.middleware.common.CommonMiddleware',
-
'django.middleware.csrf.CsrfViewMiddleware',
-
'django.contrib.auth.middleware.AuthenticationMiddleware',
-
'django.contrib.messages.middleware.MessageMiddleware',
-
'django.middleware.clickjacking.XFrameOptionsMiddleware',
-
]
配置属性MIDDLEWARE的数据格式为列表类型,每个中间件的设置顺序是固定的,如果随意变更中间件很容易导致程序异常。每个中间件的说明如下:
SecurityMiddleware:内置的安全机制,保护用户与网站的通信安全。
SessionMiddleware:会话Session功能。
LocaleMiddleware:国际化和本地化功能。
CommonMiddleware:处理请求信息,规范化请求内容。
CsrfViewMiddleware:开启CSRF防护功能。
AuthenticationMiddleware:开启内置的用户认证系统。
MessageMiddleware:开启内置的信息提示功能。
XFrameOptionsMiddleware:防止恶意程序单击劫持。
6.4 配置数据库
6.4.1
默认情况下,Django支持使用PostgreSQL、MySQL、Sqlite3和Oracle数据库,如果要使用其他的数据库,如MSSQL或Redis等,需要自行安装第三方插件。配置属性DATABASES是设置项目所使用的数据库信息,不同的数据库需要设置不同的数据库引擎,数据库引擎用于实现项目与数据库的连接,Django提供了4种数据库引擎:
数据库引擎用于实现项目与数据库的连接,Django提供了4种数据库引擎:
‘django.db.backends.postgresql’
‘django.db.backends.mysql’
‘django.db.backends.sqlite3’
‘django.db.backends.oracle’
在创建项目的时候,Django已默认使用Sqlite3数据库,配置文件settings.py的配置信息如下所示:
项目创建之后,如果没有修改配置属性DATABASES,当启动并运行Django时,Django会自动在项目的目录下创建数据库文件db.sqlite3,如下图所示:
由于项目babies需要使用MySQL数据库,因此在配置属性DATABASES中设置MySQL的连接信息。在配置数据库信息之前,首先确保住本金地计算机已安装MySQL数据库系统,然后再安装MySQL的连接模块,Django可以使用mysqlclient和pymysql模块实现MySQL连接。
6.4.2 使用mysqlclient模块
mysqlclient模块可以使用pip指令安装,打开命令提示符窗口并输入安装指令pip install mysqlclient
,然后等待模板安装完成即可。
如果使用pip在线安装mysqlclient的过程中出现错误,还可以选择whl
文件安装。在浏览器中访问https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient并下载与Python版本相匹配的mysqlclient文件。
本机安装的Python是64位的,因此选择mysqlclient-1.4.6-cp38-cp3
8-win_amd64.whl
下载
- 我们将mysqlclient文件下载保存在D盘,然后打开命令提示符窗口,使用pip完成whl文件的安装,如下所示:
- pip install D:\mysqlclient-1.4.6-cp38-cp38-win_amd64.whl
完成mysqlclient模块的安装后,在项目的配置文件settings.py中配置MySQL数据库连接信息,代码如下:
为了验证数据库连接信息是否正确,我们使用数据库可视化工具Navicat Premium打开本地的MySQL数据库。在本地的MySQL数据库创建数据库babies,如下图所示:
刚创建的数据库babies是一个空白的数据库,接着在PyCharm的Terminal界面下输入Django操作指令python manage.py migrate来创建Django内置功能的数据表。因为Django自带了内置功能,如Admin后台系统、Auth用户系统和会话机制等功能,这些功能都需要借助数据表实现,所以该操作指令可以将内置的迁移文件生成数据表,如下图所示:
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhibeigi
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22