关于“Python”的核心知识点整理大全63

news2024/12/30 3:17:22

目录

20.2.11 使用 Git 跟踪项目文件

1. 安装Git

2. 配置Git

3. 忽略文件

.gitignore

注意

4. 提交项目

20.2.12 推送到 Heroku

注意

20.2.13 在 Heroku 上建立数据库

20.2.14 改进 Heroku 部署

1. 在Heroku上创建超级用户

注意

注意


20.2.11 使用 Git 跟踪项目文件

如果你阅读完了第17章,就知道Git是一个版本控制程序,让你能够在每次成功实现新功能 后都拍摄项目代码的快照。无论出现什么问题(如实现新功能时不小心引入了bug),你都可以轻 松地恢复到最后一个可行的快照。每个快照都被称为提交。 使用Git意味着你在试着实现新功能时无需担心破坏项目。将项目部署到服务器时,需要确 保部署的是可行版本。如果你想更详细地了解Git和版本控制,请参阅附录D。

1. 安装Git

Heroku Toolbelt包含Git,因此它应该已经安装到了你的系统中。然而,在安装Heroku Toolbelt之 前打开的终端窗口中无法访问Git,因此请打开一个新的终端窗口,并在其中执行命令git --version:

(ll_env)learning_log$ git --version
git version 2.5.0 

如果由于某种原因出现了错误消息,请参阅附录D中的Git安装说明。

2. 配置Git

Git跟踪谁修改了项目,即便项目由一个人开发时亦如此。为进行跟踪,Git需要知道你的用 户名和email。因此,你必须提供用户名,但对于练习项目,可随便伪造一个email:

(ll_env)learning_log$ git config --global user.name "ehmatthes"
(ll_env)learning_log$ git config --global user.email "eric@example.com"

如果你忘记了这一步,当你首次提交时,Git将提示你提供这些信息。

3. 忽略文件

我们无需让Git跟踪项目中的每个文件,因此将让Git忽略一些文件。为此,在manage.py所在 的文件夹中创建一个名为.gitignore的文件。注意,这个文件名以句点打头,且不包含扩展名。在 这个文件中输入如下内容:

.gitignore
ll_env/
__pycache__/
*.sqlite3

我们让Git忽略目录ll_env,因为我们随时都可以自动重新创建它。我们还指定不跟踪目录 __pycache__,这个目录包含Django运行.py文件时自动创建的.pyc文件。我们没有跟踪对本地数 据库的修改,因为这是一个糟糕的做法:如果你在服务器上使用的是SQLite,当你将项目推送到服务器时,可能会不小心用本地测试数据库覆盖在线数据库。


注意

如果你使用的是Python 2.7,请将_pycache_替换为*.pyc,因为Python 2.7不会创建目录 __pycache__。


4. 提交项目

我们需要为“学习笔记”初始化一个Git仓库,将所有必要的文件都加入到这个仓库中,并 提交项目的初始状态,如下所示:

1 (ll_env)learning_log$ git init
Initialized empty Git repository in /home/ehmatthes/pcc/learning_log/.git/
2 (ll_env)learning_log$ git add .
3 (ll_env)learning_log$ git commit -am "Ready for deployment to heroku."
[master (root-commit) dbc1d99] Ready for deployment to heroku.
 43 files changed, 746 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 Procfile
 --snip--
 create mode 100644 users/views.py
4 (ll_env)learning_log$ git status
# On branch master
nothing to commit, working directory clean
(ll_env)learning_log$

在1处,我们执行命令git init,在“学习笔记”所在的目录中初始化一个空仓库。在2处, 我们执行了命令git add .(千万别忘了这个句点),它将未被忽略的文件都添加到这个仓库中。 在3处,我们执行了命令git commit -am commit message,其中的标志-a让Git在这个提交中包含 所有修改过的文件,而标志-m让Git记录一条日志消息。

在4处,我们执行了命令git status,输出表明当前位于分支master中,而工作目录是干净 (clean)的。每当你要将项目推送到Heroku时,都希望看到这样的状态。

20.2.12 推送到 Heroku

我们终于为将项目推送到Heroku做好了准备。在活动的虚拟环境中,执行下面的命令:

1 (ll_env)learning_log$ heroku login
Enter your Heroku credentials.
Email: eric@example.com
Password (typing will be hidden):
Logged in as eric@example.com
2 (ll_env)learning_log$ heroku create
Creating afternoon-meadow-2775... done, stack is cedar-14
https://afternoon-meadow-2775.herokuapp.com/ |
 https://git.heroku.com/afternoon-meadow-2775.git
Git remote heroku added
3 (ll_env)learning_log$ git push heroku master
--snip--
remote: -----> Launching... done, v6
4 remote: https://afternoon-meadow-2775.herokuapp.com/ deployed to Heroku
remote: Verifying deploy.... done.
To https://git.heroku.com/afternoon-meadow-2775.git
 bdb2a35..62d711d master -> master
(ll_env)learning_log$

首先,在终端会话中,使用你在https://heroku.com/创建账户时指定的用户名和密码来登录 Heroku(见1)。然后,让Heroku创建一个空项目(见2)。Heroku生成的项目名由两个单词和一 个数字组成,你以后可修改这个名称。接下来,我们执行命令git push heroku master(见3), 它让Git将项目的分支master推送到Heroku刚才创建的仓库中;Heroku随后使用这些文件在其服务 器上创建项目。4处列出了用于访问这个项目的URL。

执行这些命令后,项目就部署好了,但还未对其做全面的配置。为核实正确地启动了服务器 进程,请执行命令heroku ps:

(ll_env)learning_log$ heroku ps
1 Free quota left: 17h 40m
2 === web (Free): `gunicorn learning_log.wsgi __log-file -`
web.1: up 2015/08/14 07:08:51 (~ 10m ago)
(ll_env)learning_log$

输出指出了在接下来的24小时内,项目还可在多长时间内处于活动状态(见1)。编写本书 时,Heroku允许免费部署在24小时内最多可以有18小时处于活动状态。项目的活动时间超过这个 限制后,将显示标准的服务器错误页面,稍后我们将设置这个错误页面。在2处,我们发现启动 了Procfile指定的进程。

现在,我们可以使用命令heroku open在浏览器中打开这个应用程序了:

(ll_env)learning_log$ heroku open
Opening afternoon-meadow-2775... done

你也可以启动浏览器并输入Heroku告诉你的URL,但上述命令可实现同样的结果。你将看到 “学习笔记”的主页,其样式设置正确无误,但你还无法使用这个应用程序,因为我们还没有建 立数据库。


注意

部署到Heroku的流程会不断变化。如果你遇到无法解决的问题,请通过查看Heroku文档 来获取帮助。为此,可访问https://devcenter.heroku.com/,单击Python,再单击链接Getting Started with Django。如果你看不懂这些文档,请参阅附录C提供的建议。


20.2.13 在 Heroku 上建立数据库

为建立在线数据库,我们需要再次执行命令migrate,并应用在开发期间生成的所有迁移。要对Heroku项目执行Django和Python命令,可使用命令heroku run。下面演示了如何对Heroku部 署执行命令migrate:

1 (ll_env)learning_log$ heroku run python manage.py migrate
2 Running `python manage.py migrate` on afternoon-meadow-2775... up, run.2435
 --snip--
3 Running migrations:
 --snip--
 Applying learning_logs.0001_initial... OK
 Applying learning_logs.0002_entry... OK
 Applying learning_logs.0003_topic_user... OK
 Applying sessions.0001_initial... OK
(ll_env)learning_log$ 

我们首先执行了命令heroku run python manage.py migrate(见1);Heroku随后创建一个终 端会话来执行命令migrate(见2)。在3处,Django应用默认迁移以及我们在开发“学习笔记” 期间生成的迁移。 现在如果你访问这个部署的应用程序,将能够像在本地系统上一样使用它。然而,你看不到 你在本地部署中输入的任何数据,因为它们没有复制到在线服务器。一种通常的做法是不将本地 数据复制到在线部署中,因为本地数据通常是测试数据。 你可以分享“学习笔记”的Heroku URL,让任何人都可以使用它。在下一节,我们将再完 成几个任务,以结束部署过程并让你能够继续开发“学习笔记”。

20.2.14 改进 Heroku 部署

在本节中,我们将通过创建超级用户来改进部署,就像在本地一样。我们还将让这个项目更 安全:将DEBUG设置为False,让用户在错误消息中看不到额外的信息,以防他们使用这些信息来 攻击服务器。

1. 在Heroku上创建超级用户

我们知道可使用命令heroku run来执行一次性命令,但也可这样执行命令:在连接到了Heroku 服务器的情况下,使用命令heroku run bash来打开Bash终端会话。Bash是众多Linux终端运行的 语言。我们将使用Bash终端会话来创建超级用户,以便能够访问在线应用程序的管理网站:

(ll_env)learning_log$ heroku run bash
Running `bash` on afternoon-meadow-2775... up, run.6244
1 ~ $ ls
learning_log learning_logs manage.py Procfile requirements.txt runtime.txt users
staticfiles
2 ~ $ python manage.py createsuperuser
Username (leave blank to use 'u41907'): ll_admin
Email address:
Password:
Password (again):
Superuser created successfully.
3 ~ $ exit 
exit
(ll_env)learning_log$

在1处,我们执行命令ls,以查看服务器上有哪些文件和目录;服务器包含的文件和目录应 该与本地系统相同。你可以像遍历其他文件系统一样遍历这个文件系统。


注意

即便你使用的是Windows系统,也应使用这里列出的命令(如ls而不是dir),因为你正通 过远程连接运行一个Linux终端。


在2处,我们执行了创建超级用户的命令,它像第18章在本地系统创建超级用户一样提示你 输入相关的信息。在这个终端会话中创建超级用户后,使用命令exit返回到本地系统的终端会话 (见3)。

现在,你可以在在线应用程序的URL末尾添加/admin/来登录管理网站了。对我而言,这个 URL为https://afternoon-meadow-2775.herokuapp.com/admin/。 如果已经有其他人开始使用这个项目,别忘了你可以访问他们的所有数据!千万别不把这当 回事,否则用户就不会再将其数据托付给你了。

2. 在Heroku上创建对用户友好的URL

你可能希望URL更友好,比https://afternoon-meadow-2775.herokuapp.com/更好记。为此,可 只需使用一个命令来重命名应用程序:

(ll_env)learning_log$ heroku apps:rename learning-log
Renaming afternoon-meadow-2775 to learning-log... done
https://learning-log.herokuapp.com/ | https://git.heroku.com/learning-log.git
Git remote heroku updated
(ll_env)learning_log$

给应用程序命名时,可使用字母、数字和连字符;你想怎么命名应用程序都可以,只要指定 的名称未被别人使用就行。现在,项目的URL变成了https://learning-log.herokuapp.com/;使用以 前的URL再也无法访问它,命令apps:rename 将整个项目都移到了新的URL处。


注意

你使用Heroku提供的免费服务来部署项目时,如果项目在指定的时间内未收到请求或过 于活跃,Heroku将让项目进入休眠状态。用户初次访问处于休眠状态的网站时,加载时 间将更长,但对于后续请求,服务器的响应速度将更快。这就是Heroku能够提供免费部 署的原因所在。


关于“Python”的核心知识点整理大全62-CSDN博客

关于“Python”的核心知识点整理大全37-CSDN博客

关于“Python”的核心知识点整理大全25-CSDN博客

关于“Python”的核心知识点整理大全12-CSDN博客

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1368465.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

两种方式实现mysql截取年月日

select date_format(now(), %Y-%m-%d) select substring(now(), 1, 10)

MySQL面试题(下)

一.面试题案例 二.思维导图 一.面试题案例 1.查询学过「张三」老师授课的同学的信息 select s.*,c.cname,t.tname,sc.score from t_mysql_teacher t, t_mysql_course c, t_mysql_student s, t_mysql_score sc where t.tidc.cid and c.cidsc.cid and sc.sids.sid and t.tnam…

使用 TypeVar 创建 Self 类型变量,方便用户在 Pycharm 编辑器中链式调用校验方法

目录 一、前置说明1、总体目录2、相关回顾3、本节目标 二、操作步骤1、项目目录2、代码实现3、测试代码4、日志输出 三、后置说明1、要点小结2、下节准备 一、前置说明 1、总体目录 《 pyparamvalidate 参数校验器,从编码到发布全过程》 2、相关回顾 使用 Raise…

linux centos 账户管理命令

在CentOS或其他基于Linux的系统上,账户管理涉及到用户的创建、修改、删除以及密码的管理等任务。 linux Centos账户管理命令 1 创建用户: useradd username 这将创建一个新用户,但默认不会创建家目录。如果想要创建家目录,可以…

Mac电脑好用的修图软件:Affinity Photo 2中文 for Mac

Affinity Photo 2提供了广泛的图像编辑和调整工具,使用户能够对照片进行精确的编辑和改进。它支持图像裁剪、旋转、缩放、变形等操作,以及曝光、色彩、对比度、饱和度等调整。 非破坏性编辑:软件采用非破坏性编辑方式,即对原始图…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-2(1) 质量刚体的在坐标系下运动

本文仅供学习使用,总结很多本现有讲述运动学或动力学书籍后的总结,从矢量的角度进行分析,方法比较传统,但更易理解,并且现有的看似抽象方法,两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

【高效开发工具系列】idea注释设置

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【idea】idea 开发快捷键

在Java开发中,有一些常用的快捷键和工具,可以提高开发效率。以下是一些常见的Java开发常用到的功能和快捷键: IDE快捷键: 代码大小写切换: ctrlshiftu 格式化代码:Ctrl Alt L,会让代码更整…

GC9118S—低压 5V 全桥驱动芯片,可替代TMI8118,应用于摄像机,机器人技术等产品上

GC9118S 是一款低压 5V 全桥驱动芯片,为摄像机、消费类产品、玩具和其他低压或者电池供电的运动控制类应用提供了集成的电机驱动解决方案。 GC9118S 能提供高达 1.1A 的持续输出电流。可以工作在 2~6V 的电源电压上。具有 PWM(IN/IN)输入接口…

UE5 C++(十四)— Interface的使用

文章目录 接口(Interface)介绍接口在C中的应用接口在UE中的使用 接口(Interface)介绍 接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现&#x…

Linux进程通信之管道

目录 1、无名管道 1.无名管道的特点 2.pipe函数创建管道 3.图例 2、命名管道(FIFO) 1.命名管道的特点 2.mkfifo 函数-创建命名管道 3.示例 1.循环读取数据 2.循环写入数据 1、无名管道 管道通常指的就是无名管道, 1.无名管道的特点…

Support Vector Machine 建模(基于三种数据集)

目录 一、 SVM 对于 Iris 数据集的处理 建模: 二、 SVM 对于 弯月数据集的处理 建模: 三、 SVM 对于 direct marketing campaigns (phone calls)数据集的处理 建模: Support Vector Machine (SVM)是一种机器学习算法,属于监…

数据结构排序——选择排序与堆排序(c语言实现)

数据结构排序——选择排序与堆排序(c语言实现) 今天继续排序的内容: 文章目录 1.选择排序1.1基本介绍1.2代码实现1.2.1基础款1.2.2进阶款 2.堆排序2.1基本介绍2.2代码实现 1.选择排序 1.1基本介绍 选择排序(Selection Sort&#…

RTMP vs SRT:延迟与最大带宽的比较

引言 文来自Haivision的白皮书,比较了RTMP和SRT两种流媒体协议的优缺点,并通过实验测试了两种协议在延迟和最大带宽两方面的表现。 本文福利, 免费领取C音视频学习资料包学习路线大纲、技术视频/代码,内容包括(音视频…

Labelimg打标工具编译版使用介绍——免安装conda等python虚拟环境,简单易用上手快,不容易报错

首先直接给出免积分的下载地址,开源软件,直接共享给csdn的各位开发者,求个三连不过分吧。点赞关注收藏。谢谢各位支持 资源地址如下 1 打开D:\xxxxx\labelImg\data内的predefined_classes.txt文件, 修改其中的类别为自己需要的…

JavaWeb——后端之登录功能

6. 登录功能 6.1 登录认证 只进行用户名和密码是否存在的操作 Slf4j RestController public class LoginController {Autowiredpublic EmpService empService;PostMapping("/login")public Result login(RequestBody Emp emp) {log.info("{}员工登录", …

数据结构——队列(Queue)

目录 1.队列的介绍 2.队列工程 2.1 队列的定义 2.1.1 数组实现队列 2.1.2 单链表实现队列 2.2 队列的函数接口 2.2.1 队列的初始化 2.2.2 队列的数据插入(入队) 2.2.3 队列的数据删除(出队) 2.2.4 取队头数据 2.2.5 取队…

基于JAVA的教学过程管理系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 教师端2.2 学生端2.3 微信小程序端2.3.1 教师功能如下2.3.2 学生功能如下 三、系统展示 四、核心代码4.1 查询签到4.2 签到4.3 查询任务4.4 查询课程4.5 生成课程成绩 六、免责说明 一、摘要 1.1 项目介绍 基于JAVAVu…

56、Flink 的Data Source 原理介绍

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的…

SpringBoot Import提示Cannot resolve symbol

背景 项目开发过程中经常在IDEA中出现Cannot resolve symbol,但是依赖确定已经通过maven或者gradle依赖了 常见原因 IDEA 存在缓存 File -> Invalidate Caches/Restart jar包的scope不正常,如果只是runtime则无法import,需要调整为com…