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

如何验证DjangoForm的字符串(Django形式验证)

时间:2023-03-07 12:23:12 网络应用技术

  今天,我将与您分享DjangoForm如何验证字符串知识。其中,将解释Django形式验证。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!

  本文目录清单:

  1.如何比较django的字符串长度2.如何在django中实现模板页面以实现字符串匹配替换。长度是用python完成的。以下两个字符串:

  str1 ='123'

  str2 ='12345'

  #use len()构建-in函数以占用字符串长度

  如果Len(Str1)Len(Str2):

  打印“少”

  别的:

  打印“而不是”

  两个解决方案:

  1:将数据替换为前台的背景。

  2:背景没有处理,因此前台用jQuery处理。处理方法是正则表达式。

  因为您没有特定的程序,所以只能给您一些建议。如果您发布该程序,则可能会有更好的解决方案。

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

  PHP形式处理

  PHP超级全球

  PHP形式验证

  php Ultra-Global变量$ _GET和$ _POST用于收集表单数据(Form-Data)。

  php -a简单的html表格

  下面的示例显示了一个简单的HTML表单,其中包含两个输入字段和一个提交按钮:

  实例

  html

  身体

  form action =“ welcome.php” method =“ post”

  名称:输入类型=“ text” name =“名称” br

  电子邮件:输入类型=“ text” name =“ email” br

  输入类型=“提交”

  /形式

  /身体

  /html

  运行实例

  当用户填写此表单并单击“提交”按钮时,表单数据将发送到php文件,即“ welcome.php”以进行处理。通过HTTP POST方法发送Form Data。

  如果您需要显示提交的数据,则可以简单地输出所有变量(echo)。“ welcome.php”文件就是这样:

  html

  身体

  欢迎?php echo $ _post [“ name”];br

  您的电子邮件地址是:?PHP Echo $ _post [“电子邮件”];

  /身体

  /html

  输出:

  欢迎约翰

  您的电子邮件地址是john.doe@example.com

  您可以使用HTTP GET方法获得相同的结果:

  实例

  html

  身体

  表单action =“ welcome_get.php” method =“ get”

  名称:输入类型=“ text” name =“名称” br

  电子邮件:输入类型=“ text” name =“ email” br

  输入类型=“提交”

  /形式

  /身体

  /html

  运行实例

  “ Welcome_get.php”是:

  html

  身体

  欢迎?php echo $ _get [“ name”];br

  您的电子邮件地址是:?php echo $ _get [“ email”];

  /身体

  /html

  上面的代码很简单。但是,错过了最重要的内容。您需要验证表单数据以防止脚本中的漏洞。

  注意:处理PHP表格时请注意安全!

  此页面不包括任何表单验证过程,它仅向我们显示如何发送和接收表单数据。

  但是,本章将说明如何提高PHP表单的安全性!表格的适当安全验证对于抵制黑客和垃圾邮件非常重要!

  获取与帖子

  get and post create数组(例如,阵列(key = value,key2 = value2,key3 = value3,...)。此数组包含键/值对,其中键是表单控制的名称,值来自用户的输入数据。

  获取和发布被视为$ _get和$ _post。它们是超级-Full -Scale变量,这意味着他们不需要考虑其访问的域 - 不用特殊代码,您可以从任何函数,类或文件。

  $ _GET是通过URL参数传递到当前脚本的变量数组。

  $ _post是通过HTTP帖子传递给当前脚本的变量数组。

  什么时候使用?

  任何人都可以看到通过GET方法发送的信息(所有变量名称和值都在URL中显示)。GET还限制了发送的信息数。限制性限制以大于2000个字符。但是,由于变量在URL中显示,将页面添加到书签更方便。

  GET可用于发送非敏感数据。

  注意:切勿使用get发送密码或其他敏感信息!

  何时使用帖子?

  邮政方法发送的信息是从表单中看不见的(所有名称/值将嵌入到HTTP请求的主题中),并且发送的信息数没有限制。

  此外,POST支持高级功能,例如将文件上传到服务器时多部分二进制输入。

  但是,由于变量未在URL中显示,因此无法将页面添加到书签中。

  引入DjangoForm的验证字符串和Django形式验证的引入已经结束。我想知道您是否从中找到了所需的信息?如果您想进一步了解此信息,请记住要收集对该网站的关注。