简介:今天,当Django使用相关内容时,首席CTO Note将与您分享。如果您能解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
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提供的管理类中,有所有这些用法。您可以找到其源代码并自己阅读。
DataField确实需要一个对象将其写入数据库。
Foriegnkey确实需要建立的课程。例如
此外,它在Djangoproject的官方网站上提供了丰富的帮助。可以搜索大多数答案。
[编辑本段]概述
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
Django在后台非常好。对于URL,它更方便。您认为这不是灵活的吗?居住的主要思想django是低耦合的
Django有很多模板标签。您也可以自己扩展。您说这不是灵活和不便。我没有感觉。
结论:以上是首席CTO注释为所有人编写的Django的全部内容。感谢您阅读本网站的内容。我希望这对您有帮助。更多有关django何时使用类的相关内容。forgot在此站点上找到它。