Django+python3网站小实践

本文介绍了使用Django框架和Python3构建Web应用的全过程,从项目的由来到目的,详细讲解了Django的安装、创建Web项目、配置、数据库连接、错误解决以及数据可视化。内容涵盖了Django的MTV模式、URL编写规则、数据库配置、模板配置、后台管理系统以及遇到的问题和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 由来

Django是一个开放源代码的web应用框架,采用了MTV的框架模式,即模型(Model)、模板(Template)和视图(Views),三者之间各自负责不同的职责。
• 模型,数据存取层,处理与数据相关的所有事务,例如如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
• 视图,表现层,处理与表现相关的决定,例如如何在页面或其他类型文档中进行显示。
• 模板,业务逻辑层,存取模型及调取恰当模板的相关逻辑,模型与模板的桥梁。

2 目的

简便、快速地开发数据库驱动的网站:强调代码复用,多个组件可以很方便地以插件形式服务于整个框架,Django有许多功能强大的第三方插件,可以很方便地开发出自己的工具包。这使得Django具有很强的可扩展性,还强调快速开发和DRY(Do Not Repeat Yourself)原则。Django基于MVC的设计十分优美:
• 对象关系映射(Object Relational Mapping,ORM):通过定义映射类来构建数据模型,将模型与关系数据库连接起来,使用ORM框架内置的数据库接口可实现复杂的数据操作。
• URL设计:开发者可以设计任意的URL(网站地址),而且还支持使用正则表达式设计。
• 模板系统:提供可扩展的模板语言,模板之间具有可继承性。
• 表单处理:可以生成各种表单模型,而且表单具有有效性检验功能。
• Cache系统:完善的缓存系统,可支持多种缓存方式。
• 用户管理系统:提供用户认证、权限设置和用户组功能,功能扩展性强。
• 国际化:内置国际化系统,方便开发出多种语言的网站。
• admin管理系统:内置admin管理系统,系统扩展性强。

3 安装

3.1 命令行安装

Windows + R -> cmd -> pip install -i https://pypi.douban.com/simple django

3.2 检查是否成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eymw73EU-1603960724805)(86A8F447952E4C679F30BDAFA05B43A8)]

4 创建Web项目

4.1 新建一个Django项目

  1. Pycharm -> New Project
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2gPW2aSw-1603960724806)(7D0C4B38A5854CD6AF952DC9DEE7490F)]

  2. 点击 create,会自动生成如下文件夹
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fN4kKr3w-1603960724809)(2E1B5CCA9E5E43AC9A37F82AC08E893A)]

4.2 创建网站首页和用户中心

  1. 在 Django 同级目录下创建 index 和 user 文件夹

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sdOyuou5-1603960724811)(6FEC4F54B5BC4BFC9B97231BF0CC2017)]

  1. 各文件简单介绍
  • migrations: 用于数据库的迁移;
  • __init.py: 初始化文件一般不需修改;
  • admin.py: 当前 APP 的后台管理系统;
  • apps.py: 当前 APP 的配置信息,Django 1.9 之后自动生成,一般无需修改;
  • models.py: 定义映射类关联数据库,实现数据持久化,MTV 中的模型(Model);
  • tests.py: 自动化测试模块;
  • views.py: 逻辑处理模块,MTV 中的视图(Views)。
  1. 进行如下设置
    在这里插入图片描述
    不加端口号80默认为8000
    在这里插入图片描述
    在这里插入图片描述

4.3 启动服务器运行网页

在上方标题栏,点击
Run -> Edit Configurations -> Host: localhost, 其余不修改 -> OK
Run -> Run ‘Django’
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hD7gEErt-1603960724814)(90861A00CAB5400CAAB9FE5B50EF3EBC)]
则默认浏览器会打开:
在这里插入图片描述

4.4 Error 及解决

Q1:NameError: name ‘os’ is not defined

在这里插入图片描述

A1:点击报错的文件,添加 import os 保存再次运行即可,如下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3pJNg8Eb-1603960724812)(C9B5F42F32E64613B1C6862EB6E9BF8E)]

Q2:ModuleNotFoundError:No module named ‘django’

A2:Pycharm -> File -> Settings -> Project Interpreter -> 点击 + -> django -> install

Q3:WARNING: You are using pip version 19.2.3, however version 20.0.2 is available.You should consider upgrading via the ‘python -m pip install --upgrade pip’ command.

在这里插入图片描述
A3:先运行此命令升级 pip:python -m pip install --upgrade pip -i https://pypi.douban.com/simple

5 Django项目配置

项目配置是根据实际开发需求从而对整个Web框架编写相关配置信息。配置信息主要由项目的settings.py实现,主要配置有项目路径、密钥配置、域名访问权限、App列表、配置静态资源、配置模板文件、数据库配置、中间件和缓存配置。

setting.py

# 项目路径
# Build paths inside the project like this: os.path.join(BASE_DIR,...)
BASE_DIR =
os.path.dirname(os.path.dirname(os.path.abspath( file )))
# 密钥配置
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'u7gd2#90dmi$e6zkgxy1!p0s&gvuj)q^v%4i9^nwva2uuvvdm'
# 调试模式
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG =True
# 域名访问权限,允许所有域名访问ALLOWED_HOSTS= [‘*’]
ALLOWED_HOSTS = []
# APP列表

Applicationdefinition
INSTALLED_APPS =[
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'index',
'user',
]

5.1 设置(settings)

settings.py: 新创建的 APP 必须添加在 APP 列表中,如下
在这里插入图片描述

  • admin:内置的后台管理系统
  • auth:内置的用户认证系统
  • contenttypes:记录项目中所有 model 元数据(Django 的 ORM 框架)
  • sessions:Session 会话功能,标识当前访问网站的用户身份,记录相关的用户信息
  • messages:消息提示功能
  • staticfiles:查找静态资源路径

5.2 静态文件路径配置

在这里插入图片描述

除此之外,静态资源配置还有 STATIC_ROOT,作用是方便在服务器上部署,实现服务器和项目之间的映射。其主要收集整个项目的静态资源并存放至一个新的文件夹,然后由该文件夹与服务器构建映射关系。

STATIC_ROOT配置: STATIC_ROOT=os.path.join(BASE_DIR, 'all_static')

用于项目部署,在开发过程作用不大。

5.3 Error及解决

Q1:localhost 拒绝了我们的连接请求

A1:将 URL 修改为:http://localhost:8000/static/index.jpg(因为之前改了默认端口,为8000,原来是80)

5.4 模板配置(templates)

  • templates: 一种特殊的 HTML 文档,嵌入了一些能够让 python 识别的变量和指令,程序解析它们生成完整的 HTML 网页并返回给用户。是 Django 中的 MTV 框架模式的 T 部分,配置模板路径是告诉 Django 在解析模板时找到模板所在位置。创建项目时已有初始模板配置信息。
    在这里插入图片描述
    此处,进行如下配置:
    在这里插入图片描述

6 数据库配置

settings.py 文件:
在这里插入图片描述

7 中间件配置

中间件(Middleware)是处理Django的request和response对象的钩子。当用户在网站中进行单击某个按钮等操作时,这个动作是用户向网站发送请求(request):而网页会根据用户的操作返回相关的网页内容,这个过程称为响应处理(response)。从请求到响应的过程中,当Django接收到用户请求时Django首先经过中间件处理请求信息,执行相关的处理,然后将处理结果返回给用户。
在这里插入图片描述

8 URL编写规则

8.1 简单 url

在App里添加urls.py是将属于App的URL都写入到该文件中,而项目根目录的urls.py是将每个App的urls.py统一管理。当程序收到用户请求的时候,首先在根目录的urls.py查找该URL是属于那个App,然后再从App的urls.py找到具体的URL信息。在根目录的urls.py编写URL规则。
在这里插入图片描述

8.2 带变量的 url

URL的变量类型有字符类型、整型、slug和uuid,最为常用的是字符类型和整型。
各个类型说明如下。

  • 字符类型:匹配任何非空字符串,但不含斜杠。如果没有指定类型,默认使用该类型。
  • 整型:匹配0和正整数。
  • slug:可理解为注释、后缀或附属等概念,常作为URL的解释性字符。可匹配任何ASCII字符以及连接符和下画线,能使URL更加清晰易懂。比如网页的标题是“16岁的女孩”,其URL地址可以设置为“16-sui-de-nv-hai”
  • uuid:匹配一个uurd格式的对象。为了防止冲突,规定必须使用破折号并且所有字母必须小写,例如075194d3-6885-417e-a8a8-6c931e272f00
<year>:变量名为year,数据格式为字符类型,与<str:year>的含义一样。
<int:month>:变量名为month,数据格式为整型。
<slug:day>:变量名为day,数据格式为slug。

在这里插入图片描述

8.3 设置参数name

在这里插入图片描述

8.4 设置额外参数

以字典的数据类型传参,该参数没有具体命名,字典形式即可,且只能在视图函数中读取和使用。
在这里插入图片描述
浏览器输入/dict/2020.htm(不能写成 .html,只能识别第一次的 html)

8.5 构建网页内容

  1. 下载文件,首次会有下载确认选项
    在这里插入图片描述
  2. 模拟华为官网首页

9 数据可视化

视图除了接收用户请求和返回响应内容之外,还可以与模型(Model)实现数据交互(操作数据库)。视图相当于一个处理中心,负责接收用户请求,然后根据请求信息读取并处理后台数据,最后生成HTML网页返回给用户。视图操作数据库实质是从models.py导入数据库映射对象,models.py的数据库对象是通过Django内置的ORM框架构建数据库映射的,从而生成数据库对象。

9.1 Mysql数据库插件安装库

  1. 安装 mysqlclient
    pip install mysqlclient

  2. 安装 PyMysql 连接库
    pip3 install PyMysql

  3. 安装 mysql 数据库

  4. 解压缩mysql-5.7.28-winx64到D;

  5. 若果不是D盘请修改my.ini中的路径basedir和datadir路径;

  6. 在mysql的bin文件夹中,cmd命令模式下安装服务;

  7. 初始化mysql(每次初始化必须清空data文件夹,否则会报如下 Q2 的Error);
    在这里插入图片描述

  8. 启动 mysql 实例;
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ob7qb2uj-1603960724815)(6B3BAD05B63743DCAE3646438B2AD4CC)]

  9. 修改密码;
    初始化之后会产生一个 root 随机密码(下图框中):
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h5ODoG40-1603960724817)(F567A7E99CF7414E84886194611E7560)]
    首先登录 root 账户,用命令 set password=password('root')
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IR2ZDIUf-1603960724815)(3329CB3813F34A7C88F0A4AB0CBCE872)]
    使用 sqlyog 或 Navicat 连接数据库,新建,New Connection,输入名称,确定
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

9.2 mysql数据库结构创建

a. 新建django3

在这里插入图片描述
b. 编写测试代码
在这里插入图片描述
看到 mysql 的版本号,python3必须使用5.7以上的 mysql,否则无法后续生成django的安全权限等数据表。
c. 导入 django 安全权限等数据表和自定义数据表结构
在这里插入图片描述
d. 通过 index_product.xlsx 录入产品或通过 index_product.sql 导入产品
在这里插入图片描述

9.3 mysql数据库ORM引用

修改 index.html 和 views.py
在这里插入图片描述

9.4 运行华为官网

9.5 Error及解决

Q1:install/Remove of the Service Denied!

A1:使用管理员身份运行 cmd

Q2: --initialize specified but the data directory has files in it. Aborting.

A2:将 mysql-5.7.28-winx64 中的 data 文件夹清空,再次运行即可

Q3:Can’t connect to MySQL server on ‘localhost’ (10061)

在这里插入图片描述
A3:可能有如下原因:

  • 没有使用管理员模式运行;
  • 随机密码输入错误;
  • mysql 服务未启动

Q4:django.db.utils.OperationalError: (2002, "Can’t connect to MySQL server on '180.167.16

0.139’ (10060)")

A4:将 settings.py 中HOST修改为 'HOST': '127.0.0.1'

Q5:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named ‘MySQLdb’

A5:需安装 PyMysql(使用python3以上的版本),在项目 init.py 文件中

import pymysql

pymysql.install_as_MySQLdb()

Q6:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required

A6:在 init.py 文件中

import pymysql
pymysql.version_info = (1, 4, 13, 'final', 0)  # 指定版本
pymysql.install_as_MySQLdb()

10 Admin 后台系统

Admin后台系统也称为网站后台管理系统,主要用于对网站前台的信息进行管
理,如文字、图片、影音和其他日常使用文件的发布、更新、删除等操作,也
包括功能信息的统计和管理,如用户信息、订单信息和访客信息等。简单来说
, 就是对网站数据库和文件的快速操作和管理系统,以使网页内容能够及时得
到更新和调整。

  1. 创建管理员:在 Pycharm 中打开 Terminal,
    python manage.py createsuperuser
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-STYzeWfc-1603960724818)(E55576AD77804242A9FDFD19246FFDE2)]

  2. 登录 localhost/admin/login
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gc92O7BA-1603960724818)(F888B8BA4ED34F6295810180225BBBA7)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mlhO00KM-1603960724820)(086B71236CCF49588E5FC633485BFAD8)]

10.1 注册 Product

  1. index -> admin.py

  2. 修改 title 和 header在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值