使用Django搭建web服务器的例子(最最正确的方式)
作者:hao_qi 发布时间:2021-10-23 12:39:11
今晚在Mac OS中搭建web服务器时遇到一点冲突,逛了几个论坛和网站,都说的太片面。
先列出最正确的搭建步骤:(无论你是任何操作系统,或者任何版本,都没毛病)
① 随便找个位置建一个文件夹(比如:Windows下的D盘)
② 打开终端(Windows下是cmd) cd 进入文件夹位置(简单吧)
③ 创建一个虚拟环境(虚拟环境就是磁盘一个位置,为了后续部署到服务器,这也是必须的并且是最正确的一步)
④ 激活虚拟环境
⑤ 安装Django
⑥ 在Django 中创建一个项目
⑦ 创建数据库
⑧ 使用 runserver 命令启动服务器
请提前安装好 python3.6、pip3 及 pycharm 专业版。
----------------------------------------------------------
每一步都超简单,几分钟就完成了。。不要信那些乱七八糟的讲解。首先他们不是创建的虚拟环境,就是错的。
我看好多人都写踩了几天几夜的坑集成了SQLite,配置Django到path环境变量……一系列错误操作
----------------------------------------------------------
我在工作目录下新建了一个文件夹 qihao_blog
cd进入 qihao_blog 目录后创建一个虚拟环境
python3 -m venv ll_env
这一步创建了一个名为 ll_env 的虚拟环境(随便起了一个名字而已)
运行python3 -m venv ll_env 命令之后会在我们文件夹下创建一个文件夹 ll_env 这个文件夹就是虚拟环境
----------------------------------
这一步要讲一下,由于Mac系统自带Python2.7,Xcode目前最高仅支持2.7,
所以开发IOS的就不要卸载系统自带的Python2.7。直接安装Python 3.6就可以了。
需要注意的是直接运行Python命令调用的是2.7,调用Python3.6需要使用 Python3 命令
----------------------------------
Windows用户没有以上问题。。。。。
这一步仅仅建个文件夹输一条命令就完事了,PyCharm直接创建项目对pip版本有要求,不支持现在的新版pip,需要降级。
如果你使用的是较早的Python版本,或者系统没有正确设置,不能使用模块venv,需安装virtualenv包
(最好还是使用Python3)
接下来激活虚拟环境
source ll_env/bin/activate
注意 如果你使用的是Windows系统,请使用命令 ll_env\Scripts\activate(不包含source)来激活这个虚拟环境。
要停止使用虚拟环境,可执行命令:deactivate
环境处于活动状态时,环境名将包含在括号内。在这种情况下,可以在环境中安装包,并使用已安装的包。
在ll_env虚拟环境中安装的包仅在该环境处于 活动状态 时才可用。
安装Django
创建并激活虚拟环境后,就可安装Django了:
pip install Django
这只是把Django安装在刚才创建的虚拟环境文件夹里。
由于是在虚拟环境中工作,因此在所有的系统中,安装Django的命令都相同:
无需使用python -m pip install package_name 这样较长的命令。更不用配置path环境变量。因为不是系统环境。
别忘了,Django仅在虚拟环境处于活动状态时才可用。
很多人用一条命令验证Django的path环境变量配置的是否正确。
如果不放心你可以试试虚拟环境能不能调用
django-admin help
记住这个时候虚拟环境是激活状态…………(前面有个括号,里面是虚拟环境名字)
接下来在Django 中创建一个项目
这个时候建议使用我们常用的PyCharm,当然也可以继续使用dos命令窗口。
PyCharm中打开刚才新建的qihao_blog文件夹
很多人会疑惑,我为什么不从第一步开始就使用PyCharm直接创建一个Django项目呢???
当然PyCharm会自动创建虚拟环境,并下载好Django。。
但是pip高版本不支持。不值得改来改去的。
前面我也提到了版本的问题。直接dos命令行创建虚拟环境后,打开使用高版本就好了。。
在terminal中输入如下命令。创建一个my_blog项目。
django-admin.py startproject my_blog .
这个命令 末尾的句点 让新项目使用合适的目录结构,这样开发完成后可轻松地将应用程序部署到服务器。
注意 千万别忘了这个句点,否则部署应用程序时将遭遇一些配置问题。如果忘记了这个句点,就将创建的文件和文件夹删除(ll_env除外),再重新运行这个命令。
创建完成后的目录结构就如截图看到一样,多了一个my_blog文件夹。。
接下来创建数据库
python manage.py migrate
为什么是Python命令不是Python3命令???
因为你就在Python3的虚拟环境中做各种操作。时刻记住做各种操作都是在环境激活的状态下。。
运行命令后,工程目录下就会多了一个 db.sqlite3 文件
在使用SQLite的新项目中首次执行这个命令时,Django将新建一个数据库 db.sqlite3 首次执行命令migrate时,将让Django确保数据库与项目的当前状态匹配。
启动服务器
python manage.py runserver
现在打开浏览器,并输入URL:http://localhost:8000/ 或者 http://127.0.0.1:8000/
这个页面是Django创建的,若要关闭这个服务器,按Ctrl + C即可。
注意 如果出现错误消息“That port is already in use”(指定端口已被占用),
请执行命令python manage.py runserver 8001,让Diango使用另一个端口;
如果这个端口也不可用,请不断执行上述命令,并逐渐增大其中的端口号,直到找到可用的端口。
来源:https://blog.csdn.net/gfg156196/article/details/80573261


猜你喜欢
- 引言多阶段构建方式,是在 Dockerfile 中使用多个 FROM 指令,每个 FORM 指令都是一个新的构建阶段,并且可以方便地复制之前
- 和大多数的语言脚本一样,学习ASP最好的方法就是亲身尝试ASP,使用你自己的系统安装PWS或者IIS。你可以边学习边在你自己的服务器上测试A
- 前言:流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。Go语言中最常用的流程控制有if和for,
- 一. 语法1.1 获取当前页面的所有cookie:var allCookies = document.cookie;allCookies 是
- pytorch保存数据pytorch保存数据的格式为.t7文件或者.pth文件,t7文件是沿用torch7中读取模型权重的方式。而pth文件
- 前言备受期待的django 2.0已经发布了,最大的一个变化就是不再支持python2.x版本了,这也为我们还在保守使用的2.x的同学们敲响
- python面向对象编程入门,我们需要不断学习进步"""抽象工厂模式的实现"""
- 1 什么是嵌套循环所谓嵌套循环就是一个外循环的主体部分是一个内循环。内循环或外循环可以是任何类型,例如 while 循环或 for 循环。
- 本文为大家分享了windows下pycharm安装、创建文件、配置默认模板的具体步骤,供大家参考,具体内容如下步骤: 下包 —->安装
- 导入组件首先导入需要的组件,pygame游戏组件,time是时间组件import pygame, time, sysfrom pygame.
- 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往
- 前言:我们在日常生活中,都离不开时间和日期。不仅我们的汉字都有大量描述时间日期的词语如斗转星移、分秒必争、只针朝夕、转眼之间等。同样,在我们
- 本文实例讲述了Python函数基础用法。分享给大家供大家参考,具体如下:一、什么是命名关键字参数?格式: 在*后面参数都是命名关键字参数。特
- 1.索引碎片的产生?由于在表里大量的插入、修改、删除操作而使索引页分裂。如果索引有了高的碎片,有两种情况,一种情况是扫描索引需要花费很多的时
- Python中使用ElementTree可以很方便的处理XML,但是产生的XML文件内容会合并在一行,难以看清楚。如下格式:<root
- 源码:from pyecharts import Barimport reimport requestsnum=0b=[]for i in
- 一、三种数据文件的读取二、csv、tsv、txt 文件读取1)CSV文件读取:语法格式:pandas.read_csv(文件路径)CSV文件
- 目录一、字符串:二、使用:(1)空字符串和 len( ) 函数(2)转译字符( \ )(3)字符串拼接(4)字符串复制(
- 1.使用场景定时执行jmeter脚本,通过python定时器隔一段时间执行命令行命令。2.库os、datetime、threading(1)
- 使用type()查看数据的类型在Python中, 可以使用type()类型来查看数据的类型:>>> type(3)<