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

什么是django表格(2023年的最新答案)

时间:2023-03-07 15:54:39 网络应用技术

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

  如果我不了解错误,这是非常基本的。它可以在Python教程中提供。因此,我认为您不应该熟悉Django。在其官方网站上查看教程。看完之后。

  简而言之,Django可以通过设置模型以获取数据库数据来轻松获取数据库的数据。也可以通过class.objects.s.all的方法获得。您也可以使用get and Filter。获取数据后,它存在于模型中的对象中。然后将此变量传递给模板。该变量在模板中显示在HTML中。

  HTML通过HTTPresponse之类的对象返回到浏览器。

  还有一种稍微简洁的方法,但是原理是相同的。其中有一个形式对象,可以简化模板的使用并使变速箱变量更容易,但是进行模型更为复杂。

  我记得我没有环境,form.xx可以获得当前表单的值。您会看到,框中仍然保留的实际原理是传递form.xx form.xx.xx。出来后,它应该是字典。只是清空不必要的。如果您尝试一下,我会回去为您编写代码

  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类。该类可以继承并继承或动态修改。

  [编辑本段]概述

  Django(发音:/?DGO?/)是一个用Python语言(开源Web框架)编写的开源Web开发框架,它鼓励快速开发并遵循MVC Design.django符合BSD版权。它于2005年7月首次发行,并于2008年9月发布了首个正式版本1.0。

  Django以比利时爵士音乐家Django Reinhardt的名字命名。他是吉普赛人,主要是玩吉夫拉(Geefra),也打小提琴。

  [编辑本段]设计理念

  Django的主要目的是简单,快速开发数据库驱动的网站。它强调了代码重复使用,并且多个组件可以轻松地将整个框架作为“插件-in”提供。Django有许多功能强大的第三方插头。您甚至可以开发自己的工具包。这使Django强大的可扩展性。它还强调了快速开发和干燥的原则(不要重复您的)。

  Django基于MVC的设计非常漂亮:

  对象关系映射(ORM,对象相关映射)

  以Python类的形式定义数据模型。ORM将模型连接到关系数据库。您将获得非常易于使用的数据库API。同时,您还可以在Django中使用原始SQL语句。

  URL分布

  使用正则表达式匹配URL,您可以任意设计URL,而无需框架的特定限制。

  模板系统

  使用Django功能强大且可扩展的模板语言可以与设计,内容和Python代码分开,并获得成功。

  形式处理

  您可以轻松地生成各种表单模型以实现表单的有效性测试。它可以轻松地从所定义的模型的模型中生成相应的表单。

  缓存系统

  您可以挂在存储缓冲区或其他框架中以实现超缓冲区 - 以实现所需的粒径。

  会话,用户登录和权限检查

  快速开发用户会话功能。

  全球化

  建立的国际系统,可促进多种语言的发展。

  自动管理接口

  您无需花费大量工作来创建人员管理和更新内容。Django带有管理站点,类似于内容管理系统。

  [编辑本段]部署

  Django可以在Apache上运行,也可以在支持WSGI,fastcgi.support的服务器上运行,以支持支持PostgreSQL,MySQL,SQLite3的各种数据库。

  目前,Google App Engine还支持Django的某些部分。

  [编辑本段]文档

  Django1.0建立了一个强大而完整的文档系统(),涵盖了Django的所有方面,并且适合各个级别的读者和开发人员。它还包含几个简单的示例。您可以跟随他们体验Django的美丽,逐步。

  让我们的Django博客应用程序具有以下文章模型:

  Blog/models.pyclass帖子(Models.Model):

  # 标题

  title = models.charfield(max_length = 70)

  #正正

  body = model.textfield()

  #其他属性

  def __str __(self):

  返回self.title

  首先,请参见步骤1,用户在搜索框中输入搜索关键字,因此我们需要为博客上的用户提供搜索表格。HTML表单代码可能是这样的:

  形式方法=“ get” action =“/search/”

  {%csrf_token%}输入类型=“搜索”占位符=“搜索”需要

  按钮类型=“提交”搜索/按钮/表单

  特别是,在表单标签下有一个{%csrf_token%}。这是Django捍卫Cross -Site请求伪造(CSRF)攻击的一种机制。如果您不知道CSRF是什么,这没关系。请记住,使用Django时,您必须将{%csrf_token%}添加到前端表单代码。

  用户输入搜索关键字并单击搜索按钮后,将数据发送到Django背景服务器。表单的操作属性的值为 /搜索 /,表明用户提交的结果将发送到/search /this URL.我们绑定此URL的DJANGO视图函数,并在此视图函数中完成上一步2中提到的过程。支持我们在blog /views.py中编写视图函数的代码:

  blog/views.pydef搜索(请求):

  q = request.get.get('q')

  error_msg =''

  如果不是Q:

  error_msg ='请输入关键字'

  返回渲染(请求,'blog/errors.html',{'error_msg':error_msg})

  post_list = post.objects.filter(title__icontains = q)

  返回渲染(请求,'blog/results.html',{'error_msg':error_msg,

  'post_list':post_list})

  首先,我们使用request.get.get('q')获取用户提交的搜索关键字。用户通过表格Django提交的django存储在request.get中。这是一个类似于Python字典的对象,因此我们使用GET方法从字典中删除键Q的值,即用户的搜索关键字。此处的字典键称为,因为该字典的键是因为我们表格中输入框的名称属性为Q。如果修改了名称属性的值,则必须对此键的名称进行相应修改。

  接下来,我们进行了少量验证。如果用户在不输入搜索关键字的情况下提交表单,则我们不需要执行查询,而是渲染错误的页面来指示用户应输入关键字。

  如果用户输入搜索关键字,我们将通过过滤器方法从数据库中滤除所有合格的文章。此处的过滤条件是title__icontains = q,即关键字q包含(包含)关键字q,而前缀i表示,它没有区分情况。iContains是一个字段查找,用于与需要筛选的模型背后的两个下属线保持一致。Django有很多查询表达式。建议留下官方印象,以了解每个表达的角色。将来,您可以快速定位文档以查询文档的目的:现场查找

  下一步是渲染搜索结果页面,显示符合搜索条件的文章列表。以下是模板的简单示例:

  results.html

  {%如果error_msg%} p {{error_msg}/p {%endif%}

  {post_list%} div中的帖子

  在此处显示文章的相应信息 /div {%空%} div class =“ no-pos”

  没有合格的文章 /div {%endfor%}

  视图函数后,请记住将视图函数映射到相应的URL。通过我们的表单数据提交的URL为 /搜索 /,因此视图功能搜索被键入URL。

  blog/urls.pyurlpatterns = [

  #其他URL配置

  url(r'^search/$',views.search,name ='search'),]],]]

  更大的功绩!

  结论:以上是首席CTO注释介绍的Django形式的所有内容。我希望这对每个人都会有所帮助。如果您想了解有关此信息的更多信息,请记住收集并关注此网站。