[音乐]该视频由dev Mountain赞助
如果您有兴趣学习Web开发iOS或UX设计开发人员
Mountain是为期12周的设计和开发新手训练营，旨在
您是该行业的全职职位，以了解更多信息，请访问dev mountain comm或
请点击下面的说明中的链接，嘿，伙计们，这是怎么回事
系列我们将使用react Redux和
Django好吧，这不会像一个真正快速的cookie切割器
我们将要进入??的教程，我们将编写大量代码
特别是在react和redux中，因为django api我们正在使用某些东西
称为Django rest框架，它非常高级，因此我们不必
编写大量代码以获取我们所需的功能，因此我们将
创建一个REST API，我们将实现react和redux，然后我们将添加
在带有令牌的位置上，我们将使用一种称为Django rest Knox的东西
应用程序本身将非常简单
这只是潜在客户经理，我们可以在其中添加带有名称电子邮件的潜在客户，但是
就像我说的，我们将拥有身份验证，我们将能够登录，每个用户
将有自己的销售线索，因此，如果我以一个用户的身份创建销售线索，然后以
另一个我将无法看到或管理其他人的线索，因此
我认为您将从Django的两面学到很多东西并做出反应
所以希望您喜欢它，现在就开始吧，这是
Django rest框架的文档，非常深入
这里有不同的概念，例如将使用序列化程序的视图集
路由所有这些东西，然后这是一个教程，我以此为基础
但这很简单，他们不使用redux，他们不使用身份验证
基本上只是接受了这个，然后在此基础上，他们做了很多事情
与这里所使用的E＆V差不多，我们将使用
Pippy和V，但我想向您展示的是他们的实现方式
反应这是我们要做的，与我有所不同
在完成之前，通常我会做一个独立的API，
然后是一个独立的反应单页应用程序，就像第二个一样
我们要做的是在自己的前端django应用中做出反应，所以我们要
在安装Web Pack的地方创建一个特殊的React应用程序
Dom所有这些东西，然后我们加载一个HTML模板，然后做出反应
好好管理前端，这就是我们要做的事情，我会把这个
说明中的教程链接，然后这是另一个由五部分组成的教程
与Django互动，基本上我对身份验证有很多想法
来自本教程第四部分的内容，因此，如果我正在做的事情是您不愿意做的，
很了解您可能只想看一下这些教程
看看文档，这是一种补充
好吧，让我们跳进去，我要打开一个终端，我只是一个空的
称为Lead Manager的文件夹会响应Django，因此只需转到您所使用的任何文件夹
想要用作您的项目，然后要确保您拥有Python 3
安装后，我要把它做大一点，所以如果我使用Python 3--版本
您可以看到我有3.7.0，我相信3.72是最新的，但是如果您
没有python 3，只需转到python.org并下载并安装它
现在，因为我必须使用python 3我在您之后为何不进行此清理？
如果我现在要在全球范围内安装某些东西，请使用pip 3
用pip 3安装的是pipi和V，因为一旦有了，它将允许我们
创建一个虚拟环境，然后我们可以使用pipi和V
这样的环境，所以您只想运行pip 3或pip不管是Python 3
然后pip env我的将很快，因为我已经安装了
好吧，一旦您做到了，您就可以做点E＆V Shell，这将继续下去
并为我们的项目创建一个虚拟环境，它将创建
叫做pip文件的东西，所以我实际上要打开vs代码
这个目录，在这里您会看到我们有一个pip文件，这是所有
安装任何软件包时，我们的软件包中的一部分将消失，因此我想安装一些
东西，所以我要说pip env，让我们安装我们也想要的Django
Django rest框架，然后是Django-rest-Knox
与令牌身份验证有关，我们将在稍后进行介绍，因此让我们安装这些
三件事，您会看到它们将被添加到我们的软件包中
它还将创建一个具有所有依赖项的锁定文件
版本，然后一旦完成，我将生成一个新的Django应用，因此
我要说Django-admin，假设启动项目，我应该说Django
在Django世界中，专案专案和应用程式是两回事
我会打电话给这个首席经理，然后在这里你会看到它
创建了一个名为Lead Manager的文件夹，其中包含托管的PI文件。
dot pi基本上就像Django的CLI一样，我们可以创建迁移并运行
服务器所有这些东西，所以我想将CD放入销售经理，如果我做LS，
应该可以正常使用PI，因此，如果您使用的是vs
您想要为Python解释器选择正确环境的代码
所以只要继续执行命令shift P或ctrl shift P并开始输入
Python，您将看到select解释器，并且要确保选择
一个有您的文件夹名称，然后是pippi和V，好的，我确保您这样做
好的，接下来我们要做的是
会像我说的那样生成一个django应用，所以有一个应用概念
您项目的不同部分，我们需要一个潜在客户，所以我要
说Python管理dot pi启动应用程序，我们将
称它为Leads，然后创建一个名为Leads的文件夹。
现在，无论何时创建新应用，您都想在此处进入核心文件
无论您的项目是什么，这都将被称为，现在进入设置文件
设置，您已安装了此应用程序列表，而您只想添加您的应用程序
这样导致，然后由于我们使用的是Django rest框架，我们需要
现在还添加rest框架，直到我要保留的数据库为止
使用SQL Lite，这是默认设置，因此我不必安装postgrads或
进行设置，但如果要这样做，只需确保MySQL或
Postgres
您在引擎中输入了密码数据库名称之类的东西
一切都在Django Doc中，所以我们将保存它，现在保存
要做的是进入Leads文件夹，以便我们的Leads应用程序，我们要创建一个模型
好的，所以模型基本上就是我们想要的不同领域，所以
将会是上课形式，所以我们要说上课，我们将其称为主角，
我们想要传递模型点模型，因为我们希望能够使用一些
适当的一些从核心模型类，如果对象和东西
您对Python不太熟悉，我们不会像C语法语言那样做
我们放一个冒号，然后我们以正确的结尾，然后我们将定义
我们想要的字段，所以我们做的名字等于模型点字符字段，这就是我
要使用就像文本一样的文字，然后我要最大长度为100
这应该对名称有利，我们将收到一封电子邮件，以便模型点
而且实际上有一个电子邮件字段可以将其验证为电子邮件，我们将
将最大长度也设置为100现在我不想有两个
相同的线索或线索的电子邮件
所以我将其设置为唯一，这样我们就说唯一等于true，
如果您不熟悉Python，请再次确保对布尔值使用大写T
因为那被视为一个变量，所以接下来我们要消息
这将是模型点字符字段，我们将做最大长度的假设
500，我希望它是可选的，所以我要说空白等于真实
否则，您将不得不发送一条消息，然后最后我们会做
创建的帽子将是一个日期/时间字段，我要放到里面
在这里，现在自动添加外观并不意味着要这样做
现在要自动添加，就等于添加日期
自动确定，所以我们保存一下，这就是我们现在要创建的模型
模型除了创建我们实际需要的文件外不做任何其他事情
创建一个迁移，然后运行该迁移以将该表和
数据库中的那些列，所以回到我们的终端，我们将
运行Python管理dot PI，使迁移顺利进行，这将创建
您可以看到的这个初始的一个初始点PI就是这里
现在将所有字段和内容实际添加到我们要运行的数据库中
Python管理的PI迁移，这将运行所有迁移和Django
默认情况下，要运行一堆迁移，因为它会创建一堆
用户和权限之类的东西的默认表
现在我们有了数据库设置，让我们现在开始考虑我们的API
使用其余框架，我们创建了一个称为序列化器的东西
如您所见，还有序列化程序允许复杂的数据，例如查询集和
将模型实例转换为可以轻松实现的Python数据类型
呈现给Jason XML和其他内容类型，因此显然这将是
正是我们想要提供的JSON API，因此我们需要创建一个序列化程序来
采用我们的模型或潜在客户查询集并将其转换为JSON，所以我的意思是
许多不同的方式来做到这一点，但我们将要做的事情非常非常
很简单，在这里创建一个序列化器类，然后
元的类基本上将覆盖元的类或添加到它
设置模型为领导，然后正确设置我们的字段，让我们这样做
进入我们的Leads文件夹，我们的Leads应用程序创建一个名为serializers dot pi的文件。
好的，然后在序列化器中，点pi我们要从其余部分引入
我们要导入序列化器的框架，我们也要引入潜在客户模型
因此，从潜在顾客点模型中，我们要导入潜在顾客，然后我们将创建我们的
序列化器，所以一流的序列化器，我们将从
序列化器，模型序列化器，所以我们要做的是
基本上把这变成了我们的潜在客户模型到序列化器
从中创建一个，我们可以做到这一点，比如说class meta设置了我们的
模型来领导，您刚刚在上面提出了，然后我们现在可以完成
字段，我们可以像姓名电子邮件一样放，我要放所有我们能做的
这个双下划线都很好，所以现在是我们的序列化器
接下来要做的是创建我们的API，以便在Leads文件夹中
创建一个名为API dot PI的新文件，在这里我将引入模型
因此，我们要从潜在客户点模型导入潜在客户，并从其余框架中导入潜在客户
我们要导入视图集和权限，然后我们也
当然，我们需要刚刚创建的序列化程序，因此我们希望从序列化程序中
现在就导入潜在顾客序列化程序，让我们现在创建我们的潜在顾客视图集
视图集基本上很难解释，它允许我们创建
完整的Crud API，无需指定即可创建读取更新和删除
功能的显式方法，就像Ruby on Rails一样
与他们一起使用资源，如果您想了解更多有关它的信息，
可以查看集，这将为您提供更多有关它的信息，因此我们
创建一个视图集，然后我们甚至不必创建显式路由，我们可以
使用所谓的默认路由器，基本上只是注册一个端点，例如
API斜线引线，我们可以使获取请求发布请求
所有这些东西，因此要创建此文件，我们将创建一个名为lead的类
设置，我们将从视图集引入模型视图集，然后我们
需要指定一个查询集，该查询集将获取所有
潜在客户，因此我们将以模型oop潜在客户为起点，然后对象将所有点
线索，然后我们需要权限类，这将是一个列表，
我们只想说权限点现在允许任何，我们将要更改
之后，您就只能访问自己的潜在客户，但是现在
完全打开，然后我们只需指定一个序列化类
我们创建的主序列化程序就可以了，就是这样，我们现在将其保存
我们需要现在创建URL，如果我们在潜在客户经理中查找一条路线
URLs.pi文件让我摆脱了这些评论，默认情况下，
管理员，因为Django确实带有一个管理员区域，我们不会
尽管使用了这个，所以我也将从Django URLs include中引入，所以我
可以包含一个单独的文件，我要说的没什么
基本上是我要包含潜在客户应用程序URL文件的路线
好吧，所以引出点网址，让我们看看您实际上知道这是什么
用引号好吧，所以我们现在将其保存
没有潜在客户URL文件，因此我们将进入Leads文件夹，
为与Jango合作的人们创建一个名为URLs dot pi的新文件
在您可能尚未完成此操作之前，我们不会
在此文件中明确创建这样的路径，我们将使用路由器
从rest框架开始，所以说从rest框架开始，我们要导入路由器
好的，我们还想从我们的API文件中引入视图集，以便设置Lead和
然后我们将设置一个名为路由器的变量两个路由器点默认路由器
我们说路由器点注册，因为我们可以注册我们的路线
端点将是API斜线可以，然后我们通过视图
设置一个名称，然后我们将其称为潜在客户，最后
我们的网址格式还可以，所以与其做这种网址格式，然后
不同路径的列表，我们只是将其设置为路由器点URL和
基本上只会向我们提供为此端点注册的URL
就是这样，我们应该有一个基本的crud API，以便我们可以通过以下方式对此进行测试
运行我们的服务器，让我们清理一下，然后运行Python托管的dot pi run
服务器好了，正如您所看到的，现在已经八千了，我要打开
如果您想使用邮递员，这就是我要用来发出请求的方式
没关系，但邮递员的确很棒，而且很容易
使用，因此我们可以发出所有类型的请求，以便向HTTP发出get请求
本地主机冒号8080我用斜杠引导好了，所以我们得到的是一个空数组
这是我们应该得到的，因为我们没有添加任何线索，所以我们打开一个
新标签页，然后向我们发出发布请求，然后向
相同的网址，但是我们要添加四个标题，我们要添加内容类型为
应用程序斜线Jason，然后身体，我要开始做，放
用一个名字好吧，这是杰森，所以我们需要双引号，我可以把它做大一点吗？
好吧，名字，比如说约翰·杜（John Doe），我们有名字，我们有电子邮件，我们有
消息可以是我只能说的任何信息，请与John联系我不知道全部
正确，让我们尝试一下，让我们发送并看到我们收到500错误的回复哦，您
知道他们相信什么，我们必须添加一个结尾斜杠
我们返回的状态是201，这表示一切正常，
创建了一些东西，它给了我们创建的东西，给了我们ID
命名电子邮件并完全创建，因此如果您不希望结尾
斜杠，您可以在设置中添加一个设置config值，但是很好，我只是
现在要离开它，如果我们想再创建一个，我们会说Sam Smith
发送好吧，现在，如果我们返回此标签并执行获取请求，您可以看到
现在，如果我们
想要得到其中之一，我们可以发出一个获取请求，比如说斜杠，然后
ID减一，如果我们去二则给我们John，如果我们去二，给我们Sam
要删除，我们可以选择删除以确保您
这里有一个要删除的ID，我们将其发送给我们线索
我们删除了，但让我们回到获取并签出
只是API领先哦，您没有被删除
让我们来看看删除线索--我认为行不通的是斜线哦，那是
为什么，是的，我们必须大刀阔斧，所以现在如果我们回去获得线索，哎呀，好吧
它已被删除，因此除非您仅执行API引导，否则必须放置一个
斜杠，如果我们要更新，我们也可以发出放置请求
所以我们有一个完整的原始API，您可以看到它的数量很少
我们编写的代码是因为我们使用了视图集，因此我对此进行了计划
视频更长，但我认为这是停止的好地方，因为
我们仅完成了一个简单的Django rest API，因此在下一个视频中，我们将
开始实现反应，就像我说的，我们将创建一个Django应用程序
称为前端，我们将安装Web Pack react react Dom我们所有的东西
需要能够在该前端应用程序中编译React应用程序
好吧，下一个视频再见