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

如何缝制Django的领域(2023年的最新答案)

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

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

  我的方式是在后台处理。例如,如果要放置这三个字段是省,城市,区域,则要将三个字段缝合到一个。数据。在分配值之前,请处理字段,直接调用已处理的字段。

  服务末端:

  $ result = mysql_qury(“ select * from info_table”);

  $ data = array();

  while($ row = mysql_fetch_aray($ result)){

  $ row ['province'] = $ row ['province']。$ row ['City']。

  array_push($ data,$ row);

  }

  echo json_encode($ data);

  前端:

  

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

  :第一个空间xx.strip()已解决。如果使用了所有空间,请re.sub(r“ s+”,“”,xx替换

  upload_to配置?可以指定固定路径,upload_to ='app-name'?可以指定strftime()格式化标签,django将自动处理指定格式的日期字符串,例如:file = models.filefield(upload_to = =”)照片/%y/%m/%d”)是在存储文件时...

  结论:以上是首席CTO的相关内容的摘要,请注意Django的现场缝线,我希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?