当前位置: 首页 > 网络应用技术

为什么我们使用Django(2023年的最新完成)

时间:2023-03-05 17:14:44 网络应用技术

  简介:许多朋友询问我们为什么使用Django相关的问题。本文的首席CTO注释将为您提供一个详细的答案,以供所有人参考。我希望这对每个人都会有所帮助!让我们一起看看!

  感觉到它将被没有卡片的群众击败,所以让我们开始。

  打开CMD黑色窗口,我们进入

  workon django_env

  让我们看一下如何在黑色窗口中的每个URL之间穿梭。您首先查看您现在的位置。一般来说,新开放的CMD在

  c:/user/your_name

  在这个位置,我们首先转到D驱动器,根目录是从C到D,我们只需要输入

  D:

  您可以到达D驱动器。如果您的django_env被激活,他将自动跳到

  d:/py_env/django_env

  当然,在此目录中,我们可以在这里构建该项目,但是我们也可以在其他地方构建它。请输入(请注意,CD和两个点之间有一个空间)

  CD ..

  CD意味着要去。两个小点是指父亲,这意味着当前目录的父亲目录。

  所以我们来了

  d:/py_env

  在目录中,再次输入

  CD ..

  所以我们到达

  d://

  这是D驱动器的根目录的重新输入CD。不再效果。如果您逐步遵循我的教程,那么您已经在此根目录上构建了一个名为Django_project的空文件夹。如果您还没有建造,请输入

  mkdir django_project

  创建此文件夹。当然,您还可以在图形接口中打开我的计算机,然后正确地单击新文件夹以达到位置。为了强制网格并更熟悉CMD窗口,我建议您仍然使用命令行。

  我们的CMD路径(准确是工作路径)现在在D驱动器的根目录上

  所以,请输入

  CD django_project

  指示转到django_project。当然,目前您必须确定Django_project是D驱动器根目录下的子目录。

  如果我们还在

  D:py_env/django_env

  然后输入

  CD django_project无效。您必须刚刚逐步到达D驱动器,然后输入django_project.or,您可以直接输入绝对路径

  CD d:/django_project

  使用上述命令,只要您在D驱动器上,无论您是哪个目录,都可以一步就位。

  当我们到达现场时,我们将很快建立我们的项目。

  激动人心的时刻在这里,请输入CMD

  django-admin startproject mysite

  目前,我们创建了一个项目,该项目的名称是MySite等,等等。要说良好的云磁盘不是Mao的MyCloud吗?有必要提及Django的微妙之处。一个新项目等同于计算机上的一块土地(d:/django_project/mysite目录是我们网络服务的站点),Andi尚未开始展览馆。您为什么要直接建造一个新的展览馆而不是土地,因为当我们循环时,我们可以在地面上建立许多展览馆。在Django,云磁盘不足以调用一个。该项目只能称为应用程序(一个展览馆)。只有将许多展览馆放在一起,才可以称为该项目,即一个项目可以包含许多应用程序(应用程序)。对于extplecloud磁盘服务,我们还可以提供个人博客服务。我们还可以为植物开设论坛。无论如何,将来要提供家庭水桶服务。因此,云磁盘只能被视为一个应用程序。当然,目前我们只在地面上建立一个展览馆。

  或在CMD黑色窗口中,请输入

  dir

  使用此指令在当前目录中列出子目录和存储文件,

  我们可以看到,生成一个称为MySite的子目录。实际上,山地上有两个目录,一个目录是一个点,这意味着您,即django_project本身,另一个目录是两个点,表明父亲,这意味着父亲。root目录。因此,我们看到的是Django_project目录的三代人。

  这基本上是均匀的,作为图形界面。下图的左上角的位置代表父目录。至于目录本身,无需故意表达它。

  您使用鼠标单击文件夹,实际上,内部系统是为了帮助您运行它。

  CD您单击了文件夹

  如果您点击返回,请帮助您运行

  CD ..

  回到主题,我们看到了一个MySite子目录,所以进去看看,请输入

  CD Mysite

  然后输入

  dir

  检查情况

  我发现还有另一个Mysite目录,Pit父亲,俄罗斯的孩子是!这是!

  在这一点上,我知道Django是外国人的工具。sub -directory称为与父目录相同的名称(无论如何,第一个级别目录的名称是mysite ii.once,我们不能随便更改它。将来,我们将内部称为“ mysite”。mysite,外部的外部称为区别)。细看。旁边还有一个管理。

  其中有4个PY文件。我看到了,其中之一是URLS.PY,URL的重要性,您需要专门管理文件。如果您对文章的读物有认真的阅读,则在urls.py中,settings.py也很重要。它用于管理MySite项目。因此,我认为最后一个mysite文件夹应该称为mysite_manage,因为它的内部是什么,就像在管理中一样。

  为了使每个人都知道对项目结构有更清晰的了解,我在Django的官方网站上找到了图片

  Django的背景扩展具有扩展模型和一个扩展模型字段(字段),但我仍然最喜欢这种扩展方法(Django的官方文档,非常适合自定义):

  从:

  该原理非常简单,也就是说,在url.py上添加URL配置以覆盖背景的默认URL处理,然后您可以按照需要编写自己的视图

  显然,管理接口对于数据编辑非常有用(想象)。如果它用于完成某些数据的输入工作,则管理接口确实无人看管。我们猜测,本书中的大多数读者都有大量数据输入任务。

  Django管理界面特别注意那些没有技术背景的人使用数据输入;这也是发展此功能的目的。在Django的最初开发土地报纸,开发了典型的在线市政供水质量报告系统,需求如下:

  负责此主题的记者与开发人员结识并提交了现有数据。

  开发人员设计了围绕数据的模型,并为记者开发管理接口。

  当记者将数据输入Django时,程序员可以专注于公共访问界面的开发(最有趣的部分!)。

  换句话说,Django管理接口的主要目的是同时促进内容编辑器和程序员。

  当然,除了明显的数据输入任务外,我们发现管理接口在其他情况下非常有用。

  crqrwv a href = https://www.shouxicto.com/article/“” xwyekefymefu/a,[url =] eycmfqtvgmvb [/url],[link =]

  管理数据:很少有实际数据输入与这样的站点关联,因为大多数数据来自自动生成的来源。但是,当获得的数据错误造成麻烦时,它可以轻松找到并修改错误数据以帮助问题解决。。

  如果没有或只是自定义,Django管理界面就可以处理大多数常见情况。但是,正是由于Django管理界面可以处理这种常见情况,它无法处理其他编辑模型。

  4yqjmu a href = https://www.shouxicto.com/article/“” kdqfnmmekszw/a,[url =] zusybryiqeir [/url],[link =]

  管理

  bmufnt a href = https://www.shouxicto.com/article/“” ifhkpydljkaf/a,[url =] mqitqhmcazco [/url],[link =] qcmerxzxnmhj [/link],

  受信任的用户编辑结构化内容。

  是的,这很简单,但是这个简单建立在一堆假设上。django管理界面的所有设计概念都遵循这些假设,因此让我们理解这些后续部分中术语的含义。

  受信任的用户

  管理界面的设计是由像您这样的开发人员使用的人。在这里,不仅仅是通过身份验证的人;据说Django假设内容编辑器只能执行内容编辑器的工作。

  另一方面,这意味着,如果您信任用户,他们可以在不获得许可证的情况下编辑内容,并且没有人需要允许其编辑行为。另一个含义是,尽管身份验证系统具有强大的功能,但它不支持在本书中撰写时,访问对象 - 级基础的限制。如果您允许某人编辑新闻报告,则必须确保未经许可用户不会编辑其他人的报告。

  编辑

  Django管理界面的主要目的是让用户编辑数据。乍一看,这很明显,但是如果您考虑一下,它将变得有些难以捉摸且非凡。

  例如,尽管管理接口非常方便检查数据(如今所讨论),但这不是其最初的意图。例如,我们在第12章中提到,它缺乏视图允许允许。在管理接口中,还可以执行编辑器。

  还需要注意的是,这是缺乏远程呼叫工作流程。如果特定任务包括一系列步骤,则没有机制确保可以按特定顺序完成这些步骤。DJANGOMANACORAME接口专注于编辑,不关心改变周围活动。此逃避工作流程也来自信任原则:管理接口的设计概念是工作流是一件事情,并且不需要在代码中实现。

  最后,应该注意的是,管理接口中缺乏聚合。换句话说,它不支持显示总数,平均值等的内容。再次,管理界面仅用于编辑 - 期望您通过定义视图来完成所有其他任务。

  结构化内容

  30cen9 a href = https://www.shouxicto.com/article/“” bxyzitjhvwis/a,[url =] ylhgcrwsnuue [/url],[link =] mecoeqQxpail [/link],

  这里

  现在可以肯定的是,Django的管理接口并不打算成为每个人的通用工具。相反,我们选择专注于做一件事情并完成它。

  sapqz9 a href = https://www.shouxicto.com/article/“” fmvbpdngtcts/a,[url =] tvwreqwomvco [/url],[link =]

  必须记住的是,尽管管理界面很复杂,但它总是一个应用程序。只要有足够的时间,任何Django开发人员都可以做所有事情。将来的管理界面。这个新界面具有一系列不同的先决条件,并且工作方法完全不同。

  最后,应该指出的是,在撰写本文时,Django开发人员正在进行新的管理接口开发工作,该工作将提供更自定义的灵活性。当您阅读本文时,这些新功能可能已输入真正的Django版本。

  定制管理模板

  lryxwt a href = https://www.shouxicto.com/article/“” uokhfgxirpcl/a,[url =] wqhpuiouinaf [/url],[link =] fatpucympci [/link],

  现在,让我们看看如何快速自定义管理管理接口的外观。第6章讨论了一些最常见的任务:修改商标(对于那些讨厌蓝色头发的老板)或提供自定义表格。

  进一步的目标通常包括,更改模板中的一些特殊项目。每个管理员的视图,包括修改列表,编辑表格,删除确认页面和历史视图。有一个与之相关联的模板可以在许多方面覆盖。

  首先,您可以在全局情况下覆盖模板。Admin视图使用标准模板加载机制来查找模板。因此,如果您在模板目录中创建新模板,Django将自动加载它。图17中列出了图模板。-1。

  fd2cvv a href = https://www.shouxicto.com/article/“” fphafdvvvmhea/a,[url =] mompqgnztmob [/url],[link =] oamzxjphpsxv [/link],

  在大多数情况下,您可能只想修改单独的对象或应用程序,而不是修改整体设置。因此,每个管理员视图总是找到与模型或应用程序相关的模板。查找模板的顺序如下:

  admin/app_label/object_name/template.html

  jrmal2 a href = https://www.shouxicto.com/article/“” kqqeldaxlpkep/a,[url =] ihzkjznjrsqj [/url],[link =]

  admin/template.html

  例如,在书籍应用程序中,书籍模块添加/编辑表单的视图将按以下顺序找到模板:

  管理/书籍/书籍/thex_form.html

  admin/books/change_form.html

  admin/change_form.html

  自定义模型模板

  在大多数情况下,您想使用第一个模板来创建特定的模型模板。从基础上讲,最好的方法是将信息添加到基础模板中定义的块和块。

  例如,我们想在书页面的顶部添加一些帮助文本。这可能是图17-1所示的形式。

  图17-1。定制管理编辑表格。

  这很容易做到:只需构建Admin/BookStore/book/drack_form.html模板,然后输入以下代码:

  {%扩展“ admin/change_form.html”%}

  {%block form_top%}

  pinsert有意义的帮助消息在这里.https://www.shouxicto.com/p

  {%endBlock%}

  mgrlx4 a href = https://www.shouxicto.com/article/“” omnhyzkldddtt/a,[url =] ydlrolrelntzkskj [/url],[link =]

  自定义JavaScript

  这些自定义模型模板的常见用途包括将自定义JavaScript代码添加到管理页面,以实现一些特殊的视图对象或客户端行为。

  幸运的是,这可能很容易。每个管理模板定义{%block extrahead%},您可以在head元素中添加新内容。例如,如果要将jquery()添加到管理员历史记录中,则可以做到这一点:

  {%扩展“ admin/object_history.html”%}

  {%阻止extrahead%}

  脚本src =“ https://www.shouxicto.com/article/” type =“ text/javascript”/脚本

  脚本类型=“ text/javascript”

  //代码在这里实际使用jQuery ...

  /脚本

  {%endBlock%}

  评论

  我们不知道为什么您需要将jQuery放入历史页面,但是可以在任何模板中使用此示例。

  tyy7is a href = https://www.shouxicto.com/article/“” hpswriedwzmw/a,[url =] bvkzckktnoefm [/url],[link =]

  创建自定义管理视图

  现在,想要在Django的管理员 - 调节界面中添加自定义行为的人可能会感到有些奇怪。我们在这里谈论的是如何更改管理员管理界面的外观。他们都在喊叫:我们如何更改管理管理界面的内部工作机制。

  首先要提到的是这并不令人惊讶。Admin的管理界面没有做任何特别的事情。就像其他视图一样,仅处理数据。

  确实,这里有很多代码。它必须处理各种操作,现场类型和设置以显示模型的行为。当您注意到管理员界面只是一系列视图(视图)时,增加自定义管理,视图变得易于理解。

  例如,让我们将发布者报告的视图添加到第6章中的第6本书中。创建了管理视图列表,以显示出发布者划分的书籍列表,这是您要建立的自定义管理员报告视图的非常典型的示例。

  首先,在我们的urlconf.sert中连接视图以下行:

  (r'^admin/books/report/$','mysite.books.admin_views.report'),

  在将此行添加到此管理视图之前,原始URLCONF应该是这样的:

  来自django.conf.urls.defaults导入 *

  urlpatterns =模式('',,

  (r'^admin/bookstore/report/$','bookstore.admin_views.report'),

  (r'^admin/',inderude('django.contrib.admin.urls'),),),),

  治愈

  您为什么要尝试在管理内容之前放置自定义的尝试?回想一下Django处理订单的URL匹配。在管理内容与内容匹配后,如果我们扭转了这些行的顺序,Django会找到一个内部管理视图,以了解匹配公式,并将尝试在“书籍”应用程序中输入报告模型,然后输入列表,但这不存在。

  现在我们开始写一个视图。简单起见,我们只将所有书籍加载到上下文中,然后让模板使用{%regroup%}标签来处理组操作。创建book/admin_views.py文件并写下以下内容:

  来自mysite.books.models导入书籍

  来自django.template导入requestContext

  来自django.shortcuts导入render_to_response

  来自django.contrib.admin.views.decorators导入suffer_member_required

  DEF报告(请求):

  返回render_to_response(

  “ admin/books/report.html”,

  {'book_list':book.objects.all()},

  requestContext(请求,{}),

  治愈

  报告= Staff_Member_Required(报告)

  因为我们将小组操作留在模板上,所以视图非常简单。但是,有几个微妙的细节值得我们理解。

  我们在django.contrib.admin.views.decorators中使用了Staff_Member_Required修改器。装饰师类似于第12章中讨论的login_required,但它还检查了用户是否指定为内部人员来确定他是否允许他访问管理层界面。

  修饰符保护所有内容的管理视图,并使身份验证逻辑匹配管理接口的其他部分。

  我们分析了管理下的模板。尽管并非严格要求这样做,但这是将所有管理模板放入管理员目录中的好方法。我们还将应用程序的所有模板都放在名为书名的目录中,也是最佳实践。

  我们使用requestContext作为render_to_response的第三个参数(````context_instance“''')。这确保模板可以访问当前用户的信息。

  请参阅第10章以了解有关RequestContext的更多信息。

  最后,我们为此视图制作模板。我们将扩展构建的-in管理模板,以使视图显然成为管理接口的一部分。

  {%扩展“ admin/base_site.html”%}

  {%块标题%} publicsher {%endBlock%}的书籍列表

  {%阻止内容%}

  div ID =“ content-mail”

  公共书籍的h1list:/h1

  {%regroup book_list |dictsort:发布者的“ publisher.name”为books_by_publisher%}

  {books_by_publisher%的发布者%}

  H3 {Publisher.grouper}}/H3

  Ul

  {for in public in public.list |distsort:“ title”%}

  li {book}}/li

  {%endfor%}

  /ul

  {%endfor%}

  /div

  {%endBlock%}

  通过扩展admin/base_site.html,我们无需付出任何努力即可出现Django管理接口。图17-2 i显示了这样的最终结果。

  图17-2。出版商分类的书籍管理视图

  使用此技术,您可以将梦想中的任何内容添加到管理界面。需要记住的是,这些称为自定义的管理视图实际上只是普通的Django视图。您可以使用本书其他部分中学到的技术来制作满足您需求的复杂管理界面。

  遮盖终点

  有时,默认管理视图无法完成某个工作。您可以轻松地放置自定义视图;您只需要用自己的URL覆盖构建的管理视图,换句话说,如果您的视图出现在URLConf中的默认管理视图中,则您的视图将替换默认视图并被调用。

  例如,我们可以使用允许用户简单地输入ISBN替换构建的书籍创建视图的窗口。然后,我们可以查询本书的信息并自动创建对象。

  此视图的代码作为练习留给读者。重要的部分是该URLCONF代码被打破:

  ;

  如果此代码片段在管理URL之前出现在URLConf中,则add_by_isbn视图将完全替换标准管理视图。

  这样,我们可以替换删除确认页面的任何部分,编辑页面或管理接口。

  1. Django形式很强大

  一些Django项目不会直接呈现HTML。第二个是API框架的形式,但您可能不会期望Django形成。Django形式不仅用于以这些API形式呈现HTML。最强的位置应该是其验证能力。让我们介绍几种与Django形式结合的模式:

  2.模型1:ModelTelt和默认验证

  最简单的模式是Modelform和Model中定义的默认验证方法的组合:

  #myApp/views.py

  来自django.views.gneric import createview,updateView

  从括号。视图导入loginrequiredmixin

  从.models导入文章

  类ArticleCreateAteview(LoginRequiredMixin,CreateView):

  型号=文章

  fields =('title','slug','review_num')

  class ArticleUpDateView(LoginRequiredMixin,UpdateView):

  型号=文章

  fields =('title','slug','review_num')

  如您在上面的代码中所见:

  ARTICLECREATEATEVIEW和ARTICEUPDATEVIEW设置模型作为文章

  两者都可以根据文章模型自动生成模态

  这些模型的验证基于文章模型中定义的字段转换

  3.模式2,修改和验证模型

  在上面的示例中,如果我们希望每个文章的开始都是“新”,那么我们该怎么办?首先,我们需要建立自定义验证(验证器):

  #utils/valivator.py

  来自django.core.corpeptions导入验证eRROR

  def value_begins(value):

  如果不是value.startswith(u'new'):

  提高验证Error(u'must从new'开始)

  可以看出,Django中的验证程序是不符合条件并抛出验证的功能。为了促进重复使用,我们将它们放入验证器中。

  接下来,我们可以将这些验证器添加到模型中,但是为了方便变化和维护,我们更倾向于加入该模型:

  #myApp/forms.py

  从django导入表格

  从utils.validators导入validate_begin

  从.models导入文章

  班级文章(forms.modelform):

  dev __init __(self, *args,** kwargs):

  Super(Artical Form,Self).__ Init __(8args,** kwargs)

  self.fields [“ title”]。验证者。

  元类:

  型号=文章

  Django的编辑视图(UpdateView和CreateView等)的默认行为基于为自动创建Modelform的模型属性。因此,我们需要调用自己的模型来涵盖自动创建:

  #myApp/views.py

  来自django.views.gneric import createview,updateView

  从括号。视图导入loginrequiredmixin

  从.models导入文章

  来自.forms导入文章

  类ArticleCreateAteview(LoginRequiredMixin,CreateView):

  型号=文章

  fields =('title','slug','review_num')

  form_class = ArtistForm

  class ArticleUpDateView(LoginRequiredMixin,UpdateView):

  型号=文章

  fields =('title','slug','review_num')

  form_class = ArtistForm

  4.模型三,使用form()和clear_field()方法

  如果我们要以形式验证多个字段,或验证现有存在中涉及的数据,则需要使用clean()和clear_field()表单的方法。多种密码与password2相同2:

  #myApp/forms.py

  从django导入表格

  类Myuserform(forms.form):

  用户名= forms.charfield()

  密码= forms.charfield()

  passwass2 = forms.charfield()

  def clean_password(self):

  密码= self.clenet_data ['密码']

  如果Len(密码)= 7:

  提高表格。ValidationError(“密码不安全”)

  返回密码

  def Clean():

  clear_data = super(myuserform,self).clean()

  密码= clear_data.get('密码','')

  passwass2 = clear_data.get('password2','')

  如果密码!=密码2:

  提高表格。ValidationError(“密码不匹配”)

  返回clean_data

  应当指出的是,在验证或修改后,必须将Clean()和Clean_field()()()的最后值返回到值。

  5.模式4,Modelform中的自定义字段

  我们经常以形式遇到默认验证。例如,模型中有许多不需要的项目,但是对于完整的信息,您希望必须填写这些字段:

  #myApp/models.py

  来自django.db导入模型

  类Myuser(Models.Model):

  用户名= models.charfield(max_length = 100)

  密码= models.charfield(max_length = 100)

  地址= models.textfield(空白= true)

  phone = models.charfield(max_length = 100,空白= true)

  为了满足上述要求,您可以直接添加字段以重写模型:

  #请不要这样做

  #myApp/forms.py

  从django导入表格

  来自.models导入myuser

  类Myuserform(forms.modelform):

  #请不要这样做

  地址= forms.charfield(必需= true)

  #请不要这样做

  phone = forms.charfield(必需= true)

  元类:

  模型= Myuser

  请不要这样做,因为这违反了“不重复”的原则,并且在许多复制和粘贴之后,代码将变得复杂且难以维护。正确的方法应该是使用__init __():

  #myApp/forms.py

  从django导入表格

  来自.models导入myuser

  类Myuserform(forms.modelform):

  def __init __(self, *args,** kwarg):

  super(myuserform,self).__ init __(*args,** kwargs)

  self.fields ['address']。必需= true

  self.fields ['Phone']。必需= true

  元类:

  模型= Myuser

  值得注意的是,django形式也是Python类。该类可以继承并继承或动态修改。

  有一段时间,整个圈子都转向了一篇文章,或者更准确地说,这是一场演讲。我是平庸的程序员,我的大多数同行都不是一个争议,而是一个更好的学习。主人不是很有帮助,甚至对整个编程社区有害。我们应该有一颗心,不要沉迷于蔑视链,不要怀疑我们是否是真正的程序员,我们能做的就是做事情。

  这篇文章(演讲)将被广泛传播,主要是因为它是著名的Python框架Django的作者之一,而Django是行业中的伟大神。再次移动。原因可能是,作为一所总体大学(法律)仅流氓学生编写代码,没有比较,您只能读写WordPress(Skin)不断练习编程,唯一的希望就是成为60点的Web开发人员- 服务器操作,后端应用程序,前端代码,设计,在 - 站点操作或仅-Website Administrator或Meiyue name -all name -all name -allStack Engineer.ut我没有转向该文章,因为我从未想过成为平庸的程序员,我也不想解决不努力的名称。我真正应该做的是定义一个强大的角色程序员。

  许多人问我很多年,您认为谁更强大。我很荣幸成为中国最好的前端团队。我很幸运能留在最佳代码追求团队中。我很幸运地创建了一个团队。参与并组织大型和小型会议,与站在行业顶部的程序员会面。写作博客是在许多领域结识朋友的好方法。这是会议的过程。这个定义伴随着一个思维过程。古人有云:自我文化,Qi家族,pingtianxia。掌握技术之家,不必担心完成工作。凝固团队,巩固人民的心,实现平台,实现平台与集体力量,建立一个家庭的信仰体系;通过个人,团队甚至世界上的大型组织的影响,整个社区都受到影响。我总是试图以相同的方式回答这些人的问题。

  说了很多话,这也是商业现象的参考。再次,感觉,定义,为什么?我想长时间写一个标题,因为我经常听到有人使用形容词而不是实际内容来判断某些人的好是坏,实际上,这不是一个好现象。今天我看到了一个玩笑。因为这是个玩笑,当我醒来时我有一个精神,我想说几句话。

  实际上,我不知道Po在说什么,但是我正在考虑Ruan Yifeng.mr。鲁恩和我从未见过他。他翻译了黑客和画家。他偶尔会发送一条消息,并听到许多用英语写的人写的“ JavaScript继承”。该团队改善了ES6,ES6,ES6的介绍是非常好的。当我听到Yubo的团队时,我感到非常感动,我可以招募招募。他。

  他总是写信,写作和传播给读者,高级基金会,加深和写作。他的一些同事没有提到这一点。他不是写一篇不好的文章吗?我认为,他处于世界层面,不仅是写作,而且将“我们知道的”变成“我们做什么” - 告诉社区。在我看来,这是最受尊敬的Niubi程序员之一。

  其余的没什么可说的。回到雅各的讲话 - 我们应该拥有它,不要沉迷于链条的蔑视。毫无疑问,您是真正的程序员。我们可以做的是用意图和责任做事。

  如果您是一名出色的程序员,那么 - 最好,没有人比您更好,也不是一件过分的任务;分发代码,填写您的github主页,构建轮子,填写全博客。了解社区的思想,并使用微博和行业会议来制作当今的顶级技术并明天练习最基本的介绍。因此,您是真正的程序员。

  结论:以上是为每个人编写的首席CTO注释,说明我们为什么使用Django的相关内容来回答和总结。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?