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

什么是Django的图书馆(2023年最新共享)

时间:2023-03-07 19:15:57 网络应用技术

  简介:今天,首席执行官指出,与您分享Django Library的哪种相关内容。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!

  Django是由Python开发的免费开源网络框架,该框架提供了许多经常用于网站背景开发的模块,使开发人员能够专注于业务部分。并且Web应用程序部分可用于快速建立高性能,优雅,优雅网站。并提供了一般网络开发模型的高度抽象,并为通过Dry概念提供了频繁编程操作的快速解决方案。

  Django在来源开放后可以吸引许多关注者,这与以下优势是不可分割的:

  ①完成功能。在大量常用的工具和框架中,它可以轻松,快速地开发功能齐全的Web应用程序。

  ②完美的文档。Django开发了十多年,并具有广泛的实际情况。同时,Django提供了完整的在线文档。Django用户可以找到更容易找到问题的解决方案。

  ③强的数据库访问组件。django带有一个面向对象的映射关系,该关系反映了数据模型与关系数据库之间的映射关系。开发人员可以在不学习SQL语言的情况下操作数据库。

  ④柔性URL映射。django提供了基于正则表达式的URL分配设备,开发人员可以灵活地编写URL。

  ⑤丰富的模板语言。django模板具有丰富的语言功能,并支持自定义模板标签;Django还支持使用第三方模板系统,例如Jinja2。

  ⑥改进的背景管理系统。Django具有构建的 - 后端数据管理系统。简单配置后,您可以编写少量代码以使用完整的背景管理功能。

  ⑦完整的错误消息提示。Django提供了一个非常完整的错误消息提示和定位功能,可以在开发和调试过程中快速定位错误或异常。

  ⑧强缓存支持。django具有一个内置的高速缓存框架,并提供了多种可选的缓存方法。

  ⑨国际化。django包含一个支持Django组件中多种语言的国际系统。

  使用多个数据库

  Django 1.2中的新内容:请,请参阅发行说明

  大多数其他文档都假定假设一个数据库。本文主要讨论如何在django中使用多个数据库。使用多个数据库添加一些步骤。

  定义您的数据库

  使用Multi -Data库的第一步是设置要通过数据库使用的数据库服务。此设置用于绘制当事方和特定连接设置字典,这是DJANGO定义数据库的一致方法。请参阅数据库文档文档。在字典中。

  您要在使用数据库之前使用。

  这是一个settings.py代码平板电脑,定义两个数据库。定义默认的PostgreSQL数据库和一个称为用户的MySQL数据库:

  :{'name':'user_data','引擎':'django.db.backends.mql','user':'mysql_user','password':'priv4te}}}}}}}}

  如果您尝试访问数据库设置中未定义的数据库,Django将抛出Django.db.utils.connectiondotexist异常。

  同步您的数据库

  SynCDB Management命令一次仅操作一个数据库。在默认情况下,它操作默认数据库。但是添加-DATABASE参数,您可以使SynCDB同步不同的数据库。,您可以使用以下命令:

  $ https://www.shouxicto.com/article/manage.py syncdb

  $ https://www.shouxicto.com/article/manage.py syncdb -database =用户

  如果您不同步同一数据库中的所有程序,则可以定义数据库路由以实现指定模型的特定控制策略。

  如果要仔细控制同步,则有另一种方法可以修改SQLALL的输出,手动在数据库中执行命令,该命令如下:

  $ https://www.shouxicto.com/article/manage.py sqlass销售|https://www.shouxicto.com/article/manage.py dbshell

  使用其他管理命令

  其他操作数据库的django-admin.py命令类似于SynCDB。他们一次仅操作一个数据库,然后使用 - 数据库来控制使用哪个数据库。

  自动数据库路由

  使用最简单的数据库的最简单方法是设置数据库路由解决方案。默认路由方案确保对象“关闭”其原始数据库(例如:哪个数据库是从获得数据库的哪个数据库,以及保存哪个数据库)。默认路由方案还确保如果未指定数据库,则所有查询将对默认数据库作用。

  您不必为启动默认路由方案做任何事情,因为它“立即使用”。但是,如果要执行一些更有趣的数据库分配行为,则可以定义和安装自己的数据库路由。

  数据库路由

  数据库路由是类。此类最多有四种方法:

  db_for_read(模型,**提示)

  建议模型对象使用操作过程中使用的数据库。

  如果数据库操作可以为选择数据库提供其他信息,则可以通过提示字典提供。请参见下面的详细信息。

  如果没有建议,请无返回。

  db_for_write(模型,**提示)

  建议模型对象读取操作过程中使用的数据库。

  如果数据库操作可以为选择数据库提供其他信息,则可以通过提示字典提供。请参见下面的详细信息。

  如果没有建议,请无返回。

  laster_relation(obj1,obj2,**提示)

  当obj1和obj2之间存在关系时,返回了true,不允许返回错误,或者在没有意见时返回,这是一个纯粹的验证操作,该操作用于该操作外部钥匙和多个操作。

  laster_syncdb(db,型号)

  确定该模型是否可以与DB的数据库同步为别名。如果您可以返回true,如果您不能返回false,或者在没有意见时返回无返回。此方法用于确定给定数据库的模型是否为可用的。

  一种路由不需要提供所有这些方法,这些方法可以省略其中一个或多个。如果省略了其中一种方法,则Django将在执行相关检查期间跳过相应的路线。

  提示参数

  数据库路由收到的“提示”参数可用于确定哪个数据库应接收给定的请求。

  目前,可以提供的唯一提示参数是一个实例,即与读取操作相关的实例。它可以是保留对象的实例,也可以是添加到更多关系中的实例。在某些情况下,也可能会提供一个实例。路由检查实例是否存在,并决定是否相应地更改路线行为。

  使用路线

  数据库路由是使用Database_routers设置安装的。此设置定义了类名的列表,每个类都定义了主路由的路由(django.db.router)。

  主要路由用于Django分配的数据库操作。查询想知道使用哪个数据库时,它将提供模型和提示(如果是这样),并调用主路由。

  Django将按顺序尝试每条路线,

  在找到适当的路由建议之前。如果找不到路由,您将尝试实例提示的当前_state.db。如果没有路由提示,或者实例没有当前数据库状态,则

  主要路由将分配默认数据库。

  一个例子

  例如目的!

  此示例仅用于显示数据库的使用。此示例有意忽略一些复杂的事物,以方便如何更好地显示路线。

  如果任何MyApp中的模型都包含另一个数据库中的模型的关系,则此示例无效。请参阅交叉数据库关系部分中介绍的Django参考完整性问题。

  此示例的主要/来自该示例的配置也有缺陷:它不处理复制延迟(例如,因为通过将写作操作传递给数据库生成的查询是不一致的),并且不考虑与数据库使用情况的交互战略。

  那么,此示例有什么用?此示例仅用于在其他数据库中演示MyApp存在。所有其他模型都是主/一致的,并且存在于Master,Slave1和Slave2数据库中。此示例使用两个路由:

  类MyApprouter(Object):“” A“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”。myApp':返回'''返回none def def db_for_write(self,model,**提示):“ myapp应用程序中模型的操作到'other''if model._meta.app_lbel =='app_label ='app_label ='meta。:返回'其他'返回none none def lasse_relation(self,obj1,obj2,**提示):“如果模型包含myApp应用程序,则允许所有关系”如果OBJ1._META.APP_LABEL =='或obj2.2._Meta.app_meta.app_label.app_label。):“所有阅读操作都指向一个随机数据库”返回随机。写入操作指向主数据库“ return'” return'master'def lasse_relation(self,obj1,obj2,**提示):“数据库池中两个对象之间的任何关系” db_list =('ma ma ma master',''slave1','slave2')如果obj1._state.db in db_list和obj2._state.db in db_list中:返回true return note note note note

  然后在设置文件中添加以下内容(将路径替换为您定义路由的模型路径):)::):

  database_routers = ['path.to.myapprouter','path.to.Masterslaverouter']]

  在此设置中,路由的顺序非常重要,因为查询是按查询期间按顺序查询的。在上面的示例中,myApprouter首先放置在Masterslaverouter中,因此MyApp中的模型优先于其他型号。IF。更改了数据库_ROUTER设置中两个路由的顺序,然后将首先执行MasterSlaverouter.alla_syncdb()。由于Masterslaverouter都是 - 包含 - 这将导致所有模型使用所有数据库。

  设置后,让我们运行一些代码:

  #获fred = user.objects.gets(username ='fred')fred.firt_name ='frederick'#database fred.save.save()#person.objects.gets.get(name ='douglas adams')#何时新对象是创建的,没有分配的数据库MH = book(title ='主要是无害')#此分配将向路由发送请求,并将MH数据库设置为相同的#database mh.author = dna#这将强制强制'MH'实例使用主数据库... mh.save()#...但是,如果我们重新观察对象,我们将获得mh = mh = mh = book.objects.gets.get(title ='主要是无害')

  手动选择数据库

  Django还提供了一个API,可让您通过代码完全控制数据库。手动定义数据库分配优先。

  为查询集选择数据库

  您可以在查询集“链”中选择数据库。我们使用使用()在查询集中使用()使用()来获取指定数据库的另一个查询集。

  使用()使用一个参数:您要运行查询的别名。例如:

  #这将在“ default” database.author.objects.all()#上运行,这也将在“默认” database.author.objects.usings.using('default')上运行。all()#这将在“其他”数据库中运行。author.objects.using('其他')。全部 ()

  选择一个数据库以保存()

  在使用model.save()时添加使用的关键字以指定保存哪个数据库。

  例如,将对象保存到legacy_users数据库:

  my_object.save(使用='legacy_users')

  如果您不使用使用定义,则根据路由分配,Save()方法将将数据保存到默认数据库中。

  将一个对象从一个数据库移动到另一个数据库

  将对象保存在数据库中后,您可以使用保存(使用= ...)将该对象移动到另一个数据库中。但是,如果您不使用适当的方法,则可能会产生意外的后果。

  假设以下示例:

  p = person(name ='fred')

  首先,一个新人对象保存在第一个数据库中。这次,P没有主键,因此Django执行了插入SQL语句。这将创建一个主密钥并将此主键分配给P。

  在第二个句子中,由于p已经有一个主键,django将在保存对象时尝试在新数据库中使用此主键。如果在第二个数据库中不使用此主密钥,则不会出现问题,并且没有问题,并且对象将被复制到新数据库。

  但是,如果P的主要键已在第二个数据库中使用,则使用此主键的第二个现有对象将由P介绍。

  有两种避免上述情况的方法。首先,您可以删除实例的主要键。如果对象没有主键,Django将将其视为新对象,并且在保存时不会导致数据丢失在第二个数据库中:

  p = person(name ='fred')p.save(fusth ='first')p.pk = none#清除主键。

  第二种方法是使用force_insert选项来确保Django执行插入SQL:

  p = person(name ='fred')p.Save(used ='first')

  这可以确保名为FRD的人在两个数据库中使用相同的主键。如果将主键保存到第二个数据库时占用,则会丢弃错误。

  选择数据库删除数据

  在默认情况下,获得了现有对象的哪个数据库,将在此数据库中执行此对象的删除:

  u = user.objects.using('legacy_users')。获取(用户名='Fred')u.delete()#

  通过将使用的关键字参数传递到model.delete()方法,您可以定义数据库中的数据。使用使用情况类似于save()方法中的此参数。

  例如,假设我们将用户从lagacy_users数据库移动到new_users数据库以使用以下命令:

  user_obj.save(user ='new_users')user_obj.delete(use ='lectacy_users'))

  在许多数据库中使用经理

  在管理器上使用db_manager()允许管理器访问非默认数据库。

  例如,假设您有一个自定义的管理器user.objects.create_user()。

  因为create_user()是一个管理方法,而不是查询集,所以你不能

  使用user.objects.using('new_users')。create_user()。(create_user()方法

  它只能用于user.objects经理,而不是用于从管理器派生的查询集。)解决方案是使用db_manager(),就像以下内容一样:

  user.objects.db_manager('new_users')。创建用户 (...)

  db_manager()返回绑定到您指定的数据库的管理器的副本。

  在许多数据库中使用get_query_set()

  如果在管理器中重新加载get_query_set(),请确保使用相同的方法(使用super())或正确处理管理器中的_db属性(您想在管理器中使用的数据库名称)。

  例如,如果您从get_query_set方法返回自定义查询集类别,则可以执行此操作:

  类Mymanager(models.manager):def get_query_set(self):qs = customqueryset(self.model),如果self._db none none:qs.using(seld._db)返回QS QS QS QS QS QS QS QS QS QS QS QS QS QS QS

  在Django管理接口中使用多数据库

  Django的管理接口显然不支持许多数据库。如果您想支持,则必须编写一个自定义的模型。

  如果要支持数据库,则ModelAdmin对象具有五个要自定义的方法:

  类MultidBmodelAdmin(admin.modeladmin):#方便定义数据库名称常数。usist='其他'def save_model(self,request,request,obj,obj,form,conse):#让django保存对象到'其他'数据库。obj.save(使用= self.using)def delete_model(self,request,obj):#让django从'其他''''database.obj.delete(used = self.ususe)def quryset(self,request)中删除对象:#让django在'其他'数据库中搜索对象。return super(multidbmodeladmin,self).quelySet(request).using(self.using)def form form form form form form formfield_for_foreignkey(self,db_field,request = none,** kwargs):#########

  数据库设计是整个设计中最基本的部分

  1. Django应用程序设计:根据系统的分析,设计Django的应用程序。Django的开发是基于应用程序开发的,因此第一步是设计应用程序。

  2.每个应用程序模型的设计:即设计的相应数据表

  3.数据表的生成和修改

  以在线教育系统为例:

  USERPROFILE设计:在任何系统中,用户表是第一个设计的,Django将生成几个默认用户数据表

  在设计自己的用户表时,我们希望生成自己的桌子,并希望继承Django的默认表。目前,我们可以继承Abstractuser(

  来自django.contrib.auth.models import Abstractuser

  )

  班级用户(摘要使用者):

  经过

  定义用户填充表后,我们需要在sett.py文件中注册用户应用程序,installed_apps = [

  “用户”,

  这是给予的

  并定义方法auth_user_model =“ user.userprofile”,请注意,这是使用users.userprofile而不是用户。model.model.userprofile

  (1)用户模型的设计:

  当我们设计Django应用程序时,每个应用程序都有模型,并且模型文件中的模型文件可能会在其他应用程序中使用该模型。这将很容易引入周期参考的问题。一种方法是使用分层模型方法,即,下一层可以引用下一层

  模型,如下:

  注意:PEP8的规格是在第一个区域引入Python自己的袋子的区域,然后另一行的第二个区域是第三方袋,例如Django,然后是Line Issome型号的第三个区域

  (2)课程模型的写作:一个数据可能是与另一个数据的一对关系,但是一个表无法存储此关系,因此您需要将这两个数据存储在不同的数据表中,将引入外部键之间的关系。

  Model的FileFiield,定义此字段以生成按钮以在背景系统中上传文件

  (3)撰写组织模型:

  (4)操作模型写作:

  所有应用程序写入完成后,我们可以构建Python应用程序包,将所有应用程序放入此应用程序中,然后将所有应用程序放入应用程序。我们会发现对每个应用程序的模型的引用可能会出现一条红线,表明我们将向我们展示,表明我们可以向我们展示。找不到这些参考包,因此我们需要在设置中。文件

  将应用程序添加到Python的搜索目录中,

  导入sysys.path.insert(0,os.path.join(base_dir,'apps'))

  如果没有配置,则默认数据库为SQLITE,可以在数据库中的数据库配置中配置在设置中

  总结Django和Blask的特征:

  Django提供了一系列成熟的解决方案,鼓励用户使用这些现成的解决方案快速开发系统。这些解决方案似乎是独立的。实际上,他们在不同程度上相互合作。Django的所有概念都特别擅长开发电子商务系统。

  烧瓶是一种微型帧,可提供相对完整的Web服务器所需的基本功能。同时,可以自由选择扩展技术。Flask适合开发API服务(例如独立的权限系统,依赖于第三方组件)。

  两者之间的区别包括但不限于:

  权限系统

  缓存中间件

  数据库ORM

  模板引擎

  国际化

  Django基于Python的免费和开源代码Web框架。它遵循Model-Template-View(MTV)体系结构模式。它由Django Software Foundation(DSF)维护,该基金会是由非营利组织建立的独立组织。

  Django的主要目标是简化复杂,数据库驱动的网站的创建。此框架强调组件的重复性和“可插入”,更少的代码,低耦合,快速开发,不重复其自己的原理。使用Python,甚至用于设置文件和数据模型。Django还提供可选的管理创建,读取,更新和删除接口。该界面是由该省动态生成的,并通过管理模型进行了配置。

  使用Django的一些知名网站包括公共广播服务,Instagram,Mozilla,Washingta,Disqus,Bitbucket和Nextdoor。

  Django成立于2003年秋季。当时,劳伦斯日报报纸互联网程序员Adrian Holovaty和Simon Willison开始使用Python来构建申请。django的开发。它于2005年7月在BSD许可证下公开发布。该框架以吉他手Django Reinhardt.S命名,2008年6月,新成立的Django软件基金会(DSF)将来将维持Django。

  2015年7月,Django Co -Founders和Django Co -Founders and Developers的一些Django Co -Founders和开发商举行了10周年纪念活动,在劳伦斯举行了10周年纪念活动。

  Django的设计概念如下:

  松动-django的目标是使堆栈中的每个元素独立。

  较少编码的无代码,因此可以快速开发。

  不要重复自己(干燥) - 一切都应在一个地方开发,不要一次又一次地重复。

  快速开发-Django的概念是完成可能促进超快速发展的所有事情。

  简单设计-Django严格按照自己的代码维护简单的设计,并且很容易遵循最佳的Web开发实践。

  Django的一些优点如下:

  对象关系映射(ORM)支持-Django在数据模型和数据库引擎之间建立了一个桥梁,并支持大量数据库系统,包括MySQL,Oracle,Postgres,Ett。

  多语言支持-Django通过其构建的国际系统支持多语言网站。因此,您可以开发支持多种语言的网站。

  Framework支持-Django已建立-Ajax,RSS,Cache和其他各种框架的支持。

  GUI - Django为管理活动提供了一个良好的用户界面。

  开发环境-Django具有轻巧的Web服务器,可促进末端到端应用程序的开发和测试。

  Django是Python Web框架。就像大多数现代框架一样,Django支持MVC模式。

  对于Python的基本问题,您可以看到此网页,Web链接的视频教程,希望我的答案能为您提供帮助。

  结论:以上是首席CTO注释为每个人编写的Django库相关内容的相关内容。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?