栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

django笔记06

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

django笔记06

Django笔记06 搭建项目开发环境
  • 创建Django项目Babies
    • 项目基本设置
  • 新建App index
  • 新建App commodity
  • 新建App shopper
  • 项目目录配置
    • 1、babies文件夹
    • 2、commodity文件夹
    • 3、index文件夹
    • 4、media文件夹
    • 5、pstatic文件夹
    • 6、shopper文件夹
    • 7、templates文件夹
  • 项目配置文件
    • settings.py默认配置
    • 在配置文件总注册应用
    • 设置模板信息
    • 新建数据库
    • 配置数据库
    • 生成数据库迁移文件
    • 配置静态资源
    • 配置媒体资源
  • 访问静态资源和媒体资源

创建Django项目Babies

打开Pycharm ,点击File_New project 新建一个名为babies的django项目

项目基本设置

第一次运行我们的babies项目也许会报错,原因是seetings.py 文件中没有引入 os

修复以后再次点击运行

新建App index

在终端窗口执行以下命令

python manage.py startapp index

新建App commodity

在终端中执行以下命令

python manage.py startapp commodity

![在这里插入图片描述](https://img-blog.csdnimg.cn/cb9cd707fd2b41a6985ff0d78c61853f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAV0VURU42NjY=,size_20,color_FFFFFF,t_70,g_se,x_16

新建App shopper

在终端窗口执行以下代码

python manage.py startapp shopper

项目目录配置

1、babies文件夹

该文件夹与项目名相同,文件夹下有init.py、settings.py、等文件。

2、commodity文件夹

commodity是Django创建的项目应用(App),文件夹里含有init.py、 admin.py、apps.py、models.py、tests.py和views.py文件,它主要实现网站的商品列表页和商品详细页。

3、index文件夹

index是Django创建的项目应用(App),文件夹含有的文件与项目应用(App)commodity相同,它主要实现网站首页。

4、media文件夹

media是网站的媒体资源,用于存放商品的主图和详细介绍图。

5、pstatic文件夹

pstatic是网站的静态资源,用于存放网站的静态资源文件,如css、Javascript和网站界面图片。

6、shopper文件夹

shopper也是Django创建的项目应用(App),它主要实现网站的购物车页面、个人中心页面、用户登录注册页面、在线支付功能等。

7、templates文件夹

templates用于存放HTML模板文件,即网站的网页文件

项目配置文件 settings.py默认配置
import os
from pathlib import Path

# 项目路径
base_DIR = Path(__file__).resolve().parent.parent

# 密钥配置
SECRET_KEY = 'django-insecure-72fj#720j9s29=+4uiq@8)ppbd=x_240fvre#=u1!i@7idcgrz'

# 调试模式
DEBUG = True

# 域名访问权限
ALLOWED_HOSTS = []

# App列表
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': [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',
            ],
        },
    },
]

# WSGI配置
WSGI_APPLICATION = 'babies.wsgi.application'

# 数据库配置
DATAbaseS = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': base_DIR / 'db.sqlite3',
    }
}

# 内置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',
    },
]

# 国际化与本地化配置
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True

# 静态资源配置
STATIC_URL = '/static/'

默认配置下是无法完成我们的项目的,且默认的配置文件往往缺少头部的 os引入,很多第一次运行就报错是因为os没有导入。

这里我们可以修改一些代码:
如果想要让页面显示中文:

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = True
在配置文件总注册应用

我们已经创建了babies,shopper,commodity,index这四个app,现在我们需要将它们添加到settings.py中的app列表中

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'babies',#新增
    'index',#新增
    'commodity',#新增
    'shopper',#新增
]
设置模板信息

在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',
            ],
        },
    },
]
新建数据库

打开Navicat Premium

配置数据库

我们的项目默认使用的数据库是sqlite3数据库

DATAbaseS = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': base_DIR / 'db.sqlite3',
    }
}

我们将它修改为使用Mysql数据库。

DATAbaseS = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'babies',
        'USER': 'root',
        'PASSWORD':'p@ssw0rd',
        'HOST':'localhost',
        'PORT':'3306',
    }
}

注意这里的数据库配置根据你的数据库配置来设置。

配置完后点击运行发现出错

原因是没有安装 mysqlclient模块

在终端窗口中输入以下以下命令

pip install mysqlclient

完成后再次点击运行

成功!!!

生成数据库迁移文件

python manage.py migrate

此时再打开我们的babies数据库,发现多了很多表,证明迁移成功

配置静态资源

添加静态资源配置

# 添加并设置配置属性STATICFILES_DIRS
STATICFILES_DIRS = (os.path.join(base_DIR, 'pstatic'),)


为什么要用pstatic来放置静态资源呢,因为在debug=True 条件下,django只能识别static下的静态资源,给我们造成了诸多不便。

配置媒体资源
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(base_DIR, 'media')


配置属性设置后,还需要将media文件夹注册到Django里,让Django知道如何找到媒体文件,否则无法在浏览器中访问该文件夹的文件信息。打开babies文件夹的urls.py文件,为媒体文件夹media添加相应的路由地址,代码如下:

re_path('media/(?P.*)', serve,{'document_root':settings.MEDIA_ROOT}, name='media'),]

访问静态资源和媒体资源

我们在media文件夹下放了一张图片,现在来测试访问

http://127.0.0.1:8000/media/atm.png

成功!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/350411.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号