虚拟环境安装【Windows】 命令行
Django是基于Python的Web框架,依赖Python环境,所以需要安装Python解释器。
具体的Ptyhon安装过程省略
Django各版本对Python版本的依赖关系如下表所示:
Django 版本 | Python 版本 |
---|---|
1.11 | 2.7, 3.4, 3.5, 3.6, 3.7 (1.11.17 添加) |
2.0 | 3.4,3.5,3.6,3.7 |
2.1 | 3.5,3.6,3.7 |
2.2 | 3.5, 3.6, 3.7, 3.8 (2.2.8 添加) |
3.0 | 3.6, 3.7, 3.8 |
3.1 | 3.6, 3.7, 3.8 |
Django本身的版本规划时间图如下所示:
未来版本的计划节点:
版本号 | 预计发布时间 | 主线维护结束时间 | 扩展支持结束时间 |
---|---|---|---|
3.2 LTS | 2021年4月 | 2021年12月 | 2024年4月 |
4.0 | 2021年12月 | 2022年8月 | 2023年4月 |
4.1 | 2022年8月 | 2023年4月 | 2023年12月 |
4.2 LTS | 2023年4月 | 2023年12月 | 2026年4月 |
从上表中可以看出Django的版本更新迭代非常快,大版本号几乎两年加一。实际上,对于非重度用户,Django的版本差别并没有你想象中那么大,完全不必为版本的问题头疼。
安装Python虚拟环境
安装Python虚拟环境需要在命令行终端输入以下命令:
<span style="background-color:#f8f8f8"><span style="color:#333333">pip install virtualenv</span></span>
然后等软件安装下载完成后开始安装配置。
安装好virtualenv后,输入下述命令创建一个虚拟环境
<span style="background-color:#f8f8f8"><span style="color:#333333">virtualenv env_dir</span></span>
env_dir是虚拟环境的目录,运行以上命令后,会在当前目录下生成一个env_dir目录。
虚拟环境创建好后,在命令行终端进入env_dir目录,再到Script文件夹下,运行activate程序激活虚拟环境
<span style="background-color:#f8f8f8"><span style="color:#333333">activate</span></span>
发现提示符改变为(env_dir) 盘符后成功。
Django安装
pip安装Django
首先通过pip list命令查看是否安装了Django。
如果你是通过升级的方式安装Django,那么你需要先运行命令 pip uninstall django 卸载旧的版本。
Django提供3种发行版本,推荐使用官方的稳定版本:
-
你的操作系统提供的发行版本(Linux)
-
官方稳定版本(推荐)
-
开发测试版本
Django本质上是Python语言的一个类库,因此可以通过pip工具安装。
以windows系统中使用pip命令安装为例:
win+r
,调出cmd,以管理员身份运行命令:pip install django
,自动安装PyPi提供的最新版本。
如果要指定版本,可使用pip install django==3.0.6
(版本号)这种形式。
在Linux操作系统中,也是一样,使用pip工具包安装Django。
验证安装
1)进入Python交互式环境(注意一定要进入刚才安装了Django的Python解释器),按下面所示查看安装版本:
<span style="background-color:#f8f8f8"><span style="color:#333333">>>> import django
>>> django.get_version()</span></span>
2)使用pip list命令,查看是否存在Django模块。
<span style="background-color:#f8f8f8"><span style="color:#333333">解决ModuleNotFoundError: No module named 'pip'问题
通过以下两条命令可以解决
#python -m ensure pip
#python -m pip install --upgrade pip</span></span>
3)可以通过在命令行输入以下命令
<span style="background-color:#f8f8f8"><span style="color:#333333">python -m django --version</span></span>
如果这行命令输出了一个版本号,证明你已经安装了此版本的 Django;如果你得到的是一个“No module named django”的错误提示,则表明你还未安装。
配置系统环境
安装Django成功后,在Python解释器目录下的Scripts文件夹中可找到一个django-admin.exe
文件,这是Django的核心管理程序,将它加入环境变量中,方便之后调用。
进入环境变量设置界面,如下图所示,在Path变量中添加Scripts目录。
回到cmd界面,直接运行django-admin help
,如果能看到下面的内容表示环境变量设置成功。
<span style="background-color:#f8f8f8"><span style="color:#333333">D:\test>django-admin help
Type 'django-admin help <subcommand>' for help on a specific subcommand.
Available subcommands:
[django]
check
compilemessages
createcachetable
dbshell
...以下省略</span></span>
对Windows操作系统环境变量path的编辑,是为了在命令行下操作命令时可以不带路径,执行程序后不会出现程序文件无法找到的错误。
创建项目
命令行环境下创建Django项目
打开命令行界面,输入以下命令:
<span style="background-color:#f8f8f8"><span style="color:#333333">django-admin startproject books(项目名称)</span></span>
程序会在当前目录下创建一个叫做books的Django项目
<span style="background-color:#f8f8f8"><span style="color:#333333">D:\test>django-admin startproject books
D:\test>dir
D:\test 的目录
<DIR> .
<DIR> ..
<DIR> books</span></span>
Django会自动创建一个books文件夹,这是项目的根目录。在books根目录中,又有一个books目录,这是整个项目的配置文件目录(一定不要和同名的根目录混淆),还有一个manage.py
文件,它是整个项目的管理脚本。
<span style="background-color:#f8f8f8"><span style="color:#333333">D:\test>cd books
D:\test\mysite>dir
D:\test\books 的目录
<DIR> .
<DIR> ..
manage.py
<DIR> books
D:\test\books>cd books
D:\test\books\books>dir
D:\test\books\books 的目录
<DIR> .
<DIR> ..
settings.py
urls.py
wsgi.py
__init__.py</span></span>
使用Pycharm创建Django工程
以下内容为在Pycharm中创建Django项目
首先打开Pycharm,点击file-->new project,选择左边的Django,出现下图对话框,注意下面的红框提示:
-
在Location处选择工程目录
-
在使用此项目新建环境>处选择Virtualenv(这可能需要你提前使用pip install virtualenv命令安装虚拟工具virtualenv)。通常情况下,虚拟环境会以venv的名字,自动在工程目录下生成。
-
在基本解释器处,选择你要使用的Python解释器
-
两个单选框,根据需要自行选择
-
如果想使用现成的解释器或者虚拟环境,请选择现有解释器
再点开下方的More Settings:
-
模板语言: 选择使用的模板语言,默认Django就行。
-
模板文件夹:template是目录的名字,可换成任何你喜欢的名字。这里我们不选择,因为可能出现os模块缺少的bug。
-
应用程序名称: 自动帮你创建一个app,可选的功能
-
开启管理站点: 用于开启后台管理admin功能,一般勾上。
-
以上操作完成后,点击Create完成创建
等待一段时间,Pycharm会帮助我们自动创建虚拟环境,以及安装最新版本的Django。
创建完成之后,进入Pycharm的解释器设置菜单,可以看到当前Django版本。如果你要指定过去的版本,比如2.2、1.11等,需要在命令行下自己创建虚拟环境并安装django。或者在这里先删除Django,再安装你想要的指定版本。
看下我们当前的状态,注意venv虚拟环境目录。
注意,注意,注意!:从Django3.1开始,官方使用pathlib替代了os.path。在settings.py文件中,第一行就是from pathlib import Path,并且BASE_DIR是这么定义的:
BASE_DIR = Path(file).resolve(strict=True).parent.parent
如果你在创建项目的时候同时指定了template目录,那么可能在运行服务器的时候出现缺少os
模块的错误。此时,只需要在settings.py
文件顶部添加import os
即可。
点击绿色的三角,启动默认的开发服务器,如果看到欢迎界面,说明一切OK!
注意:第一次启动服务器后,Django会默认创建一个db.sqlite3
文件,这是SQLite3数据库。
如果希望汉化Pycharm的,可以在settings的plugins中搜索chinese简体包,安装即可。
启动项目
回到项目根目录下,运行python manage.py runserver
,Django会以127.0.0.1:8000
这个默认配置启动开发服务器。
注意事项:Django默认使用的为8000端口,可以在启动时单独设置其他端口如 python manage.py runserver 8001,千万不要 将这个服务器用于和生产环境相关的任何地方,这个服务器只是为了开发而设计的。
<span style="background-color:#f8f8f8"><span style="color:#333333">D:\test\books>python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
August 31, 2020 - 08:57:27
Django version 3.1, using settings 'django3_test.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.</span></span>
打开你的浏览器,在地址栏输入127.0.0.1:8000
,如果看到如下的界面,说明Django一切正常。
创建应用
在 Django 中,每一个应用(app)都是一个 Python 包,并且遵循着相同的约定。Django 自带一个工具,可以帮你生成应用的基础目录结构。
app应用与project项目的区别:
-
一个app实现某个具体功能,比如博客、公共档案数据库或者简单的投票系统;
-
一个project是配置文件和多个app的集合,这些app组合成整个站点;
-
一个project可以包含多个app;
-
一个app可以属于多个project!
app的存放位置可以是任何地点,但是通常都将它们放在与manage.py
脚本同级的目录下,这样方便导入文件。
进入mysite项目根目录,确保与manage.py
文件处于同一级,输入下述命令:
<span style="background-color:#f8f8f8"><span style="color:#333333">$ python manage.py startapp polls</span></span>
系统会自动生成 polls应用的目录,其结构如下:
<span style="background-color:#f8f8f8"><span style="color:#333333">polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py</span></span>
在Pycharm中,没有可以创建app的图形化按钮,需要在下方的Terminal
终端中输入命令:
<span style="background-color:#f8f8f8"><span style="color:#333333">python manage.py startapp polls</span></span>
这样也能创建polls应用。
Django文件
默认文件的作用
最外层的 books/ 根目录只是你项目的容器, 根目录名称对 Django 没有影响,你可以将它重命名为任何你喜欢的名称。 manage.py: 一个让你用各种方式管理 Django 项目的命令行工具。你可以阅读 django-admin 和 manage.py 获取所有 manage.py 的细节。 里面一层的 mysite/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如 mysite.urls). books/__init__.py:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。 books/settings.py:Django 项目的配置文件。 books/urls.py:Django 项目的 URL 声明,就像你网站的“目录”。 books/asgi.py:作为你的项目的运行在 ASGI 兼容的 Web 服务器上的入口。 books/wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。
settings配置文件
<span style="background-color:#f8f8f8"><span style="color:#333333"># 项目根目录
BASE_DIR = Path(__file__).resolve().parent.parent
# 密钥
SECRET_KEY = 'django-insecure-8g3#e88i6&wudgfo53e_f!r4vc0fz=w1opk_ik#h28(0#&qa@('
# 是否开启 Debug,生产环境尽量关闭
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',
]
# 根 URL 路径
ROOT_URLCONF = 'test.urls'
# 指定 html 模板目录
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],#在原有目录基础上加上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',
],
},
},
]
# WASI 应用
WSGI_APPLICATION = 'test.wsgi.application'
# 指定数据库相关参数
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# 验证密码方式
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
# 静态文件目录,CSS, JavaScript, Images
STATIC_URL = '/static/'
# 指定默认主键
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'</span></span>