0
点赞
收藏
分享

微信扫一扫

Django框架 项目总结 1

这里是总结 Django 框架的使用经验帖子,下面只是对开发 Django 项目的一个基础知识总结,尚未开始实际的项目设计。

大学毕设总结 1

1. Django 框架简介

1.1 Django 框架的承受能力

2. 基础实操开发步骤演示

2.1 开发工具准备阶段

Pycharm Professional (专业版) 最新版本的都可以——破解的话,其实不用,网上存在一些好心人,有激活码免费提供,如果激活码不行的话,可能被人注册太多次了,失效了,就需要你花点时间去弄破解,当然听说破解版问题挺多的,就看你愿不愿意氪金了,专业版才自带有Django框架。

2.2 创建运行 Django 框架的虚拟环境

Python 的虚拟环境有三个方案选择

  1. virtualenv
  2. conda
  3. Pipenv 不要用 Pipenv - 知乎劝退链接

conda 和 virtualenv 差不多,但我个人觉得比较好用的是 virtualenv ,这是一个虚拟环境文件夹,可以直接用来打包之类的,转移项目也方便很多。
在这里插入图片描述
Windows 命令行创建 Python 虚拟环境 virtualenv 的指令:

python -m venv 你的项目简称名

这样就可以等下在虚拟环境内创建 Django 项目,注意这里的 hmsys 代指—— house management system
还不懂的看这链接:
Django搭建 virtualenv 虚拟环境(超详细完整步骤)

2.3 创建 Django 项目

Django 项目可以不创建虚拟环境,不在虚拟环境内创建 Django 项目,但是后期有点麻烦,所以这里演示一番怎么创建的,但是还是比较建议创建虚拟环境后,在虚拟环境内创建 Django 项目。

2.3.1 Windows 命令行非虚拟环境下创建 Django 项目

在这里插入图片描述

2.3.2 虚拟环境下创建 Django 项目

Pycharm profeesional 内可以直接创建,具体如下
在这里插入图片描述
在这里插入图片描述
结果如下所示,在虚拟环境下的 Script 目录下创建一个名为 Hmsys 的 Django 项目:
在这里插入图片描述

2.3.3 测试下虚拟环境导出依赖包

cd 到虚拟环境的 Script 目录下 activate 进入虚拟环境 hmsys
在这里插入图片描述
导出所需的依赖包(第三方模块)

pip list > D:\PythonProject\hmsys\test.txt

pip freeze > D:\PythonProject\hmsys\requirements.txt

我觉得 pip list 比较好看点,推荐使用 pip list >
在这里插入图片描述

在这里插入图片描述
退出虚拟环境 hmsys

deactivate

在这里插入图片描述
虚拟环境 virtualenv 的创建、删除、退出、快速搭建开发环境链接

2.3.4 补充说明:推荐使用命令行创建Django项目

关于在虚拟环境 virtualenv 内创建 Django 项目——可以不按照我的思路走,比如说在 虚拟环境下 hmsys内的 Script 目录下创建Django 项目,但其实还有另外的方法也就是

django-admin startproject 项目名称
例如 

D:\>cd D:\PythonProject\hmsys

D:\PythonProject\hmsys>django-admin startproject config

D:\PythonProject\hmsys>

在这里插入图片描述
在这里插入图片描述
这样给人的感觉很不错,项目名也没那么容易重复了,virtualenv 虚拟环境名就是项目名,config 配置文件,对项目进行配置,当然这里我只是对于我个人而言感觉较好的,做个笔记,可以自行选择,不必跟风。
在这里插入图片描述
不经意间注意到这 Windows 命令行创建的好处,那就是每次我使用 Pycharm 创建 Django 项目后,想要删除 Django 项目,然后指定创建好的 virtualenv 虚拟环境的 Python 解释器,都会给我自行创建一个(1)(2)(3)…(n),所以这就很烦了,动用 Windows 命令行 创建就不会再出现这种糟糕情况,强迫症福音

在设置里面点击 Python 解释器,选择虚拟环境下的解释器,点击 Apply 或 OK
在这里插入图片描述

2.4 运行Django Web 服务

2.4.1 Windows 命令行运行

命令行先进入虚拟环境下,激活虚拟环境后再 cd 到 Django 项目下,运行此 Django Web 服务命令
如:

# 进入 hmsys 虚拟环境文件夹内的 Script 文件内,
# 里面存在一个 activate 运行文件
D:\>cd D:\PythonProject\hmsys\Scripts
# 激活虚拟环境 hmsys
activate
# config 是我的 Django 项目名
cd D:\PythonProject\hmsys\config

python manage.py runserver 0.0.0.0:80

在这里插入图片描述在这里插入图片描述

启动 Web 服务命令后,在随意哪种浏览器的URL栏里输入 127.0.0.1

正常显示结果如下所示:
在这里插入图片描述
错误显示结果如下:
需要加端口
在这里插入图片描述

2.4.2 Pycharm 运行 Django 项目

打开config项目,点击 开始运行 (绿色按钮)
运行后结果:点击蓝色的 127.0.0.1:8000,便会自动弹出浏览器,默认 Microsoft Edge 浏览器
在这里插入图片描述
注意:如果想要用本机的 IP 地址(eg:192.168.1.1)访问 Django,而不是 127.0.0.1 这样的,那么就需要在 setting.py 文件内找到 ALLOWED_HOSTS = [] 在方框内添加自己本机的 IP 地址,同理想要用 localhost 访问,也是一样,直接添加就可以了,端口不需要,默认自动加。
在这里插入图片描述
补充说明:后面测试下,发现虽然一开始 Pycharm 是用 127.0.0.1:8000 ,默认配置启动 Web 服务,但是后面一旦改了ALLOWED_HOSTS = [] 的配置,就会完全按照这个配置来运行,所以需要加上一个 ‘127.0.0.1’ 否则报错
在这里插入图片描述

2.5 理解 Django 项目的app 和 url 路由

2.5.1 理解、删除、创建 Django 项目的 app

2.5.1.1 理解 Django app、删除 app 等于删除文件夹

2.5.1.2 创建 Django 项目的app

2.5.1.2.1 Windows 命令行创建 app

进入项目根目录,执行下面的命令


python manage.py startapp 要创建的app名字

例如创建一个名为 sales 的 app
(hmsys) D:\PythonProject\hmsys\config>python manage.py startapp sales

在这里插入图片描述
在这里插入图片描述

2.5.1.2.2 Pycharm 工具创建 app

点击 Pycharm 的 Tools ,选择 Run manager.py Task… 会弹出一个命令终端出来,在里面输入

startapp 要创建的 app 名字

例如:
startapp sales

在这里插入图片描述
这样就会创建一个目录名为 sales, 对应 一个名为 sales 的app,里面包含了如下自动生成的文件。

 sales/
           __init__.py
           admin.py
           apps.py
           migrations/
               __init__.py
           models.py
           tests.py
           views.py

这个目录其实就是一个python package
在这里插入图片描述
里面有很多文件,后面会分别讲到它们的作用。

特别注意:无论是命令行 或 Pycharm 创建 app 时,在 setting.py 文件这里,都不会自动注册刚创建的 app,需要自己手动添加
如:
在这里插入图片描述

2.5.2 理解 Django 的 url 路由

2.5.2.1 返回 页面内容 给浏览器

在这个文件内需要用到的 Django 的 http 模块
注意参数: request
如下例子所示:在 app 的 view.py 文件内创建 listorders() 函数

from django.http import HttpResponse

def listorders(request):
    return HttpResponse("下面是系统中所有的订单信息。。。")
    

注意
这里面最终的返回结果是 HttpResponse 对象的参数字符串 ,也就是这句话

"下面是系统中所有的订单信息。。。"

listorders的参数 request 是 Django 中的 HttpRequest 对象,包含了HTTP请求中的信息

后端程序处理请求,常常要根据请求中的数据进行相应的处理:

我们写后端的代码,这些信息就在 HttpRequest对象中获取。
所以这个参数非常重要。
HttpRequest 对象的属性和用法,具体可以参考官方文档这里

光是定义了这样一个函数不行的,我们需要 告诉 Django :

当前端发送过来的HTTP请求 url地址 是 /sales/orders/ , 就由 views.py 里面的函数 listorders

来处理怎么告诉Django呢?

这就是 Django中的 url路由设置。

2.5.2.2 url 路由 和 appname.view.py 的不解之缘

2.5.2.2.1 添加路由记录

前面在创建项目目录的时候,在项目的设置目录下,有如下的一个urls.py 文件
在这里插入图片描述
这个文件是 url路由设置的入口文件

默认的 url 文件内容如下所示:
在这里插入图片描述
要真正的使用路由,向浏览器(客户端),返回服务器(服务端)的HttpResponse 一个响应数据
例如在一个名为 sales 的 app 内的 view.py 文件内,创建如下listorders() 函数

# sales app ——> views.py
from django.http import HttpResponse

def listorders(request):
    return HttpResponse("下面是系统中所有的订单信息。。。")
    

在这里插入图片描述

# config ——> urls.py 主路由
from django.contrib import admin
from django.urls import path

# 别忘了导入 listorders 函数
from sales.views import listorders

urlpatterns = [
    path('admin/', admin.site.urls),

    # 添加如下的路由记录
    path('sales/orders/', listorders),
]

在这里插入图片描述

上面的引用,我倒是不怎么清楚,会不会自动加载,不过一般而言我是比较建议,代码改了,还是要重启下比较舒服些。

在用 Pycharm 启动 config 项目后,点击蓝色 127.0.0.1:8000 ,会弹出一个报错,这是因为没有设置一个路由的问题,直接在 浏览器的 url 栏内输入 127.0.0.1:8000/sales/orders/
注意端口,需不需要加
还有发现其实可以这样输入的 127.0.0.1:8000/sales/orders
因为浏览器会自动补全 / 斜杠的
在这里插入图片描述

在这里插入图片描述
正确结果如下所示:
在这里插入图片描述

所以浏览器最终显示的就是 我们 listorders 函数返回的字符串。

注意:

2.5.2.2.2 路由子表 urls.py 和 主路由表 urls.py

url 路由表就是可以像上面这样,一个请求对应一个处理函数。
但是有的时候,我们的项目比较大的时候, 请求的 url 会特别多。

比如我们的系统提供给 客户、销售商、管理员 访问的 url 是不一样的,如下:

customer/
customer/orders/      

sales/
sales/orders/  

mgr/
mgr/customers/
mgr/medicines/
mgr/orders/

复杂的系统url条目多达几百甚至上千个, 放在一个主路由表 urls.py 文件内,查看时,要找一条路由记录就非常麻烦。

这时,我们通常可以将不同的路由记录 按照功能 分拆到不同的 url 路由子表 文件中。—— app 文件夹内创建一个新的 urls.py 文件

Pycharm 创建 urls.py 文件:右键点击 app 名字,选择 New ,Python File
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后在这个 sales\urls.py 文件中输入如下内容

# sales ——> urls.py
# 导入 Django 的 urls 模块
from django.urls import path
# 先 sales.urls.py ——> 后 sales.views.py    
# . 代表 当前 app 文件夹内,导入 views.py 文件
from . import views

urlpatterns = [
    path('orders/', views.listorders),
]

然后,我们再修改主 url 路由文件 config/urls.py , 如下

# config ——> urls.py 主路由
from django.contrib import admin

# path 后导入一个include函数
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),

    # 凡是 url 以 sales/  开头的,
    # 都根据 sales.urls 里面的 sales app 的子路由表进行路由查询
    path('sales/', include('sales.urls')),

]

2.5.2.3 总结 Django 的路由知识

我理解路由的重点在于:include() 和 函数,有 include 则 查询 对于 app 子路由文件 urls.py ,没有则执行指定的函数,处理请求

2.6 Django 的配置文件 setting.py

个人理解:

后端开发的本质上就是在传输图片、声音、视频、文本等等的数据,将它们序列化(也就是转变成 二进制 或者 说是字节码,这里转化的过程应该是用到了 Unicode 编码来对这些数据进行一个序列化,Unicode 编码 也被叫做 UTF-8 编码,注意这里的 8 指的是 8 bit (比特) ),这样序列化且转换成 Unicode 编码,可以方便传输数据。
因此,对于这些数据,自然也就是由后端开发来进行数据管理操作——增(INSERT)、删(DELETE)、查(SELECT)、改(UPDATE)
特别要注意的是:图片、声音、视频这类数据比较特殊,所以一般都是统称为资源文件,会单独放在一个单独的目录文件夹内,数据库不会将它们放在数据库里面的,数据库通常都是存储文本类的数据——如资源文件的文件地址(图片、声音、视频文件),其他的文本数据。

初始化过程

下面删除了之前演示的名为 sales 的 app
在这里插入图片描述
urls 路由删除

2.6.1 如何连接 MySQL 数据库及修改格式、时区配置

就目前来说,业界最广泛使用的数据库还是:关系型数据库。

关系型数据库系统,常用的开源数据库有 mysql 和 postgresql。

建议大家实际工作中使用的时候,使用上面这两种。

如果觉得用MySQL嫌麻烦的话,可以先看 Django框架默认数据库 sqlite 的相关教程:Django 默认的 sqlite 数据库

2.6.1.1 连接 MySQL 数据库配置及数据库引擎的安装

2.6.1.1.1 连接 MySQL 数据库配置

在文件内找到数据库配置,注释 sqlite 数据库默认配置 ,添加 MySQL 数据库的配置

# config.setting.py
# Database
# MySQL 数据库
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 默认
        'NAME': 'hmsys',                # 连接的数据库名
        'USER': 'root',                 # mysql的用户名
        'PASSWORD': 'root@1234',        # mysql的密码
        'HOST': '127.0.0.1',            # mysql的ip地址
        'PORT': 3306,                   # mysql的端口
    }
}
2.6.1.1.2 数据库引擎的安装

虽然配置文件配置好了,但是要想成功使用 MySQL 数据库,就需要安装 MySQL 的数据库引擎 ENGINE,否则会报错。
这里需要使用命令行安装数据库引擎,用 Pycharm 安装挺麻烦的。
这里举例方便理解:进入我之前创建的虚拟环境 hmsys,输入如下命令:

pip3 install pymysql

在这里插入图片描述
然后在 Django 项目下的 init.py 文件内加入如下内容:
目前的示例项目config

# config.__init__.py
"""
setting中的配置默认为sqlite3数据库 当需要修改成MySql时
并且在setting.py的同级目录的__init__.py 加入如下配置
否则会报错: Error loading MySQLdb module.
"""
import pymysql
pymysql.install_as_MySQLdb()

在这里插入图片描述
参考链接:Django 的 MySQL 数据库配置教程

2.6.1.2 修改中文格式、时区的配置

# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/

# 默认 英文 格式
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'  # 设置为中文格式

# 默认时区
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'   # 修改时区

USE_I18N = True

USE_L10N = True

# USE_TZ = True
USE_TZ = False    # 可以被自定义转换
# 在用 MySQL 做数据库,且django设置 USE_TZ=True 时,
# 会遇到一个问题,就是按月份或日期筛选 model 数据时只能得到空集

2.6.2 修改 Static 静态文件路径和 media 上传路径配置

链接:os.path.abspath用法
链接:关于 join 和 os.path.join 的理解

# 定义静态文件所在目录

STATIC_URL = '/static/'
# 报过错的位置 ##
STATIC_ROOT = os.path.join(BASE_DIR, '/static/')
#			#
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), # 绝对路径/static/
)

# 定义上传图片文件所在目录
# 此为指定上传的图片路径前缀
MEDIA_URL = "/media/"
 # 绝对路径 /media/
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 

报过的错:
ERRORS: ?: (staticfiles.E002) The STATICFILES_DIRS setting should not contain the STATIC_ROOT settin

os.path.dirname用法

python中的os.path.dirname(file)的使用

2.7 Django 框架重要命令 makemigrations、migrate、createsuperuser

makemigrations   # 先把 model 文件,建表的 SQL 语句整理出来 

migrate        # 之后连接数据库成功后,执行整理好的 SQL 语句

createsuperuser  # 创建超级管理员账户

理解 Django 的 makemigrations 和 migrate
Django创建超级管理员

在 Pycharm 里面点击红色框内选项,在下方弹出界面输入 此三个 命令,等同于 python manage.py 命令
在这里插入图片描述
三条命令输入后:打开浏览器,在后面输入 admin/
就会弹出一个用户登录界面
在这里插入图片描述
用户密码,就是 createsuperuser 时配置的账号和密码,密码随意,只要到时 y 就行了,邮箱随意。在这里插入图片描述

结果如下:
在这里插入图片描述
好了,Django 框架的基本使用方法,还有坑的总结就差不多这样了,后续会再补充下其他的。

                                            END         

参考链接

举报

相关推荐

0 条评论