Django表单

Posted lalavender

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django表单相关的知识,希望对你有一定的参考价值。

Httprequest对象的方法和属性:属性/方法

| 属性/方法 | 说明 | 示例 |

| :--- | :--- | :--- |

| request.path | 完整的路径,不含域名,但是包含前导斜线| “/hello/”|

| request.get_host() | 主机名(即通常所说的“域名”) |“127.0.0.1:8000”或“www.exam-ple.com” |

| request.get_full_path() | 包含查询字符串(如果有的话)的路径|“/hello/?print=true”|

| request.is_secure() |通过 HTTPS 访问时为 True ,否则为 False| True 或 False |

  • request.META 的值是一个 Python 字典,包含请求的所有 HTTP 首部,

1.HTTP_REFERER :入站前的 URL(可能没有)。

2.HTTP_USER_AGENT :浏览器的用户代理(可能没有)。

3.REMOTE_ADDR :客户端的 IP 地址,

注意,因为 request.META 是个普通的 Python 字典,所以尝试访问不存在的键时,抛出 KeyError 异常。

(HTTP 首部是外部数据,即由用户的浏览器提交,因此不能完全相信,当某个首部为空或不存在时,应该让应用程序优雅失败。)为了处理未定义的键,应该使用 try / except 子句,或者 get() 方法:

  • HttpRequest 对象还有两个属性包含用户提交的信息: request.GET 和 request.POST 。这两个属性的值都是类似字典的对象,分别用于获取 GET 和 POST 数据。 POST 数据一般由 html表单提交,而 GET 数据既可以来自表单,也可以来自页面 URL 中的查询字符串。

  • action="" 的意思是,“把表单提交到与当前页面相同的 URL”。

新建form.py,创建表单类:


from django import forms

class ContactForm(forms.Form):

subject = forms.CharField()

email = forms.EmailField(required=False)

message = forms.CharField()

定义的form类:

1.能够转化成html文档

2.能够进行验证

3.is_valid()判断数据是否有效

4.cleaned_data 属性,它的值是一个字典,存储着“清理后的”提交数据。Django 的表单框架不仅验证数据,还会清理数据,把值转换成合适的 Python 类型:

改变字段的渲染方式: widget 参数

设定长度:max_lengthmin_length

设定初始值:在form类中: initial 参数

自定义验证规则:Django 的表单系统会自动查找名称以 clean_ 开头、以字段名结尾的方法。如果存在这样的方法,在验证过程中调用。可以在表单类中自定义方法。

指定标注:指定label参数

自定义表单外观:在模板中,每个字段使用的控件( <input type="text"> 、 <select> 、 <textarea>,等等)可以使用 {{form.fieldname }} 单独渲染,而各个字段上的错误可以通过 {{ form.fieldname.errors }} 获取。

以上是关于Django表单的主要内容,如果未能解决你的问题,请参考以下文章

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

Django - 保存表单的位置

SpringBoot中表单提交报错“Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“(代码片段

如何将 django 表单字段属性插入 HTML 代码?

Django - AJAX - 如何提交多个表单?