• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Django搭建项目开发环境

武飞扬头像
酒爷大大
帮助2

(一).创建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,可以查看该工具的指令信息。
学新通

 -由于文件夹mediapstatic是我们自行创建的,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默认设置

  1.  
    import os
  2.  
    from pathlib import Path
  3.  
     
  4.  
    # Build paths inside the project like this: BASE_DIR / 'subdir'.
  5.  
    BASE_DIR = Path(__file__).resolve().parent.parent
  6.  
     
  7.  
     
  8.  
    # Quick-start development settings - unsuitable for production
  9.  
    # See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/
  10.  
     
  11.  
    # SECURITY WARNING: keep the secret key used in production secret!
  12.  
    SECRET_KEY = 'django-insecure-mzvamcbvrjs71z#gdh4ah2=$*zh8!-4$tt^dopui@v65dgj7!w'
  13.  
     
  14.  
    # SECURITY WARNING: don't run with debug turned on in production!
  15.  
    DEBUG = True
  16.  
     
  17.  
    ALLOWED_HOSTS = []
  18.  
     
  19.  
     
  20.  
    # Application definition
  21.  
     
  22.  
    INSTALLED_APPS = [
  23.  
    'django.contrib.admin',
  24.  
    'django.contrib.auth',
  25.  
    'django.contrib.contenttypes',
  26.  
    'django.contrib.sessions',
  27.  
    'django.contrib.messages',
  28.  
    'django.contrib.staticfiles',
  29.  
    ]
  30.  
     
  31.  
    MIDDLEWARE = [
  32.  
    'django.middleware.security.SecurityMiddleware',
  33.  
    'django.contrib.sessions.middleware.SessionMiddleware',
  34.  
    'django.middleware.common.CommonMiddleware',
  35.  
    'django.middleware.csrf.CsrfViewMiddleware',
  36.  
    'django.contrib.auth.middleware.AuthenticationMiddleware',
  37.  
    'django.contrib.messages.middleware.MessageMiddleware',
  38.  
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
  39.  
    ]
  40.  
     
  41.  
    ROOT_URLCONF = 'babies.urls'
  42.  
     
  43.  
    TEMPLATES = [
  44.  
    {
  45.  
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
  46.  
    'DIRS': [],
  47.  
    'APP_DIRS': True,
  48.  
    'OPTIONS': {
  49.  
    'context_processors': [
  50.  
    'django.template.context_processors.debug',
  51.  
    'django.template.context_processors.request',
  52.  
    'django.contrib.auth.context_processors.auth',
  53.  
    'django.contrib.messages.context_processors.messages',
  54.  
    ],
  55.  
    },
  56.  
    },
  57.  
    ]
  58.  
     
  59.  
    WSGI_APPLICATION = 'babies.wsgi.application'
  60.  
     
  61.  
     
  62.  
    # Database
  63.  
    # https://docs.djangoproject.com/en/4.0/ref/settings/#databases
  64.  
     
  65.  
    DATABASES = {
  66.  
    'default': {
  67.  
    'ENGINE': 'django.db.backends.sqlite3',
  68.  
    'NAME': BASE_DIR / 'db.sqlite3',
  69.  
    }
  70.  
    }
  71.  
     
  72.  
     
  73.  
    # Password validation
  74.  
    # https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators
  75.  
     
  76.  
    AUTH_PASSWORD_VALIDATORS = [
  77.  
    {
  78.  
    'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
  79.  
    },
  80.  
    {
  81.  
    'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
  82.  
    },
  83.  
    {
  84.  
    'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
  85.  
    },
  86.  
    {
  87.  
    'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
  88.  
    },
  89.  
    ]
  90.  
     
  91.  
     
  92.  
    # Internationalization
  93.  
    # https://docs.djangoproject.com/en/4.0/topics/i18n/
  94.  
     
  95.  
    LANGUAGE_CODE = 'en-us'
  96.  
     
  97.  
    TIME_ZONE = 'UTC'
  98.  
     
  99.  
    USE_I18N = True
  100.  
     
  101.  
    USE_TZ = True
  102.  
     
  103.  
     
  104.  
    # Static files (CSS, JavaScript, Images)
  105.  
    # https://docs.djangoproject.com/en/4.0/howto/static-files/
  106.  
     
  107.  
    STATIC_URL = 'static/'
  108.  
     
  109.  
    # Default primary key field type
  110.  
    # https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field
  111.  
     
  112.  
    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元素
学新通

 如有需要可直接复制以下代码:

  1.  
    INSTALLED_APPS = [
  2.  
    'django.contrib.admin',
  3.  
    'django.contrib.auth',
  4.  
    'django.contrib.contenttypes',
  5.  
    'django.contrib.sessions',
  6.  
    'django.contrib.messages',
  7.  
    'django.contrib.staticfiles',
  8.  
    'index',
  9.  
    'commodity',
  10.  
    'shopper'
  11.  
    ]

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向导生成的项目,该配置已经完成,不用再手动配置。
学新通

  如有需要可直接复制以下代码:

  1.  
    TEMPLATES = [
  2.  
    {
  3.  
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
  4.  
    'DIRS': [os.path.join(BASE_DIR,'templates')],
  5.  
    'APP_DIRS': True,
  6.  
    'OPTIONS': {
  7.  
    'context_processors': [
  8.  
    'django.template.context_processors.debug',
  9.  
    'django.template.context_processors.request',
  10.  
    'django.contrib.auth.context_processors.auth',
  11.  
    'django.contrib.messages.context_processors.messages',
  12.  
    ],
  13.  
    },
  14.  
    },
  15.  
    ]
学新通

模板配置以列表格式表示,每个元素具有不同的含义
– 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内置的功能支持中文显示,代码如下:
学新通

 如有需要可直接复制以下代码:

  1.  
    MIDDLEWARE = [
  2.  
    'django.middleware.security.SecurityMiddleware',
  3.  
    'django.contrib.sessions.middleware.SessionMiddleware',
  4.  
    'django.middleware.locale.LocaleMiddleware', # 添加中间件LocaleMiddleware
  5.  
    'django.middleware.common.CommonMiddleware',
  6.  
    'django.middleware.csrf.CsrfViewMiddleware',
  7.  
    'django.contrib.auth.middleware.AuthenticationMiddleware',
  8.  
    'django.contrib.messages.middleware.MessageMiddleware',
  9.  
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
  10.  
    ]

配置属性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-cp38-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
系列文章
更多 icon
同类精品
更多 icon
继续加载