您的位置:首页 > 编程语言 > Go语言

django 1.8.2 阅读笔记

2016-05-11 22:41 239 查看
2016.5.11

??:

重定向到视图函数可以直接用:return index(request)

??

一个表单必须指定两样东西:

where:响应用户输入的URL

how:HTTP 方法

Widget 是Django 对HTML 输入元素的表示。不要将Widget 与表单字段搞混淆。表单字段负责验证输入并直接在模板中使用。Widget 负责渲染网页上HTML 表单的输入元素和提取提交的原始数据。但是,Widget 需要赋值给表单字段。

标签为 input 元素定义标注(标记)。

label 中的for属性规定 label 与哪个表单元素绑定。

Form 的实例具有一个is_valid() 方法,它为所有的字段运行验证的程序。当调用这个方法时,如果所有的字段都包含合法的数据,它将:

返回True

将表单的数据放到cleaned_data 属性中。

如果表单的提交使用POST 请求,那么视图将再次创建一个表单实例并使用请求中的数据填充它:form = NameForm(request.POST)。这叫做”绑定数据至表单“

所有的表单类都作为django.forms.Form 的子类创建,包括你在Django 管理站点中遇到的ModelForm。

强烈建议你使用fields 属性显式设置所有将要在表单中编辑的字段。如果不这样做,当表单不小心允许用户设置某些特定的字段,特别是有的字段添加到模型中的时候,将很容易导致安全问题。这些问题可能在网页上根本看不出来,它与表单的渲染方式有关。

另外,Django 还将使用以下规则:如果设置模型字段的editable=False,那么使用ModelForm 从该模型创建的任何表单都不会包含该字段。

ModelForm就是可以自动生产相应字段的Form.自动生成哪些字段取决于Meta 类的fields属性和在该ModelForm中显示声明的字段。ModelForm 基本上只 生成表单中没有的字段,换句话讲就是没有显式定义的字段。

显式定义的字段会保持原样,所以Meta 属性中任何自定义的属性例如 widgets、labels、help_texts或error_messages 都将忽略;它们只适用于自动生成的字段。

ModelForm类会自动产生与Model相对于的表单,当然你也可以自己在ModelForm类中DIY相应的表单字段,这些作为属性存在。

每个模型表单还具有一个save() 方法。这个方法根据表单绑定的数据创建并保存数据库对象。

save() 接受一个可选的commit 关键字参数,其值为True 或False。如果save() 时commit=False,那么它将返回一个还没有保存到数据库的对象。这种情况下,你需要调用返回的模型实例的save()。 如果你想在保存之前自定义一些处理,或者你想使用特定的模型保存选项,可以这样使用。commit 默认为True。

注意模型有一个save()方法,模型表单也有一个save()方法,两者有区别也有联系。

处理这个表单的视图会在request中接收到上传文件的数据。FILES是个字典,它包含每个FileField的键 。注意request.FILES 只有在请求方法为POST,并且发送请求的拥有enctype=”multipart/form-data” 属性时,才会包含数据。否则request.FILES 为空。

request.POST is a dictionary-like object that lets you access submitted data by key name. In this case

认证一个给定用户名和密码,请使用authenticate()。它以关键字参数形式接收凭证,对于默认的配置它是username和password,如果密码对于给定的用户名有效它将返回一个User对象。如果密码无效,authenticate()返回None。

migrate查看INSTALLED_APPS设置并根据mysite/settings.py文件中的数据库设置创建任何必要的数据库表,数据库的迁移还会跟踪应用的变化;

python manage.py runserver 一个用纯Python写的轻量级Web服务器。 我们在Django中内置了它,这样你就可以在不配置用于生产环境的服务器 —— 例如Apache —— 的情况下快速开发出产品,直到你准备好上生产环境。

你编写的每个Django应用都是遵循特定约定且包含一个Python包。 Django自带一个工具,它可以自动生成应用的基本目录结构,这样你就能专心于书写代码而不是创建目录。

sqlmigrate命令接收迁移文件的名字并返回它们的SQL语句:

$ python manage.py sqlmigrate polls 0001


sqlmigrate命令并不会在你的数据库上真正运行迁移文件 —— 它只是把Django 认为需要的SQL打印在屏幕上以让你能够看到。

migrate命令会找出所有还没有被应用的迁移文件,并且在你的数据库上运行它们 。

请记住实现模型变更的三个步骤:

修改你的模型(在models.py文件中)。

运行python manage.py makemigrations ,为这些修改创建迁移文件

运行python manage.py migrate ,将这些改变更新到数据库中。

save() 方法没有返回值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: