python django 表单

来源:互联网 发布:江铠同打郑爽耳光知乎 编辑:程序博客网 时间:2024/05/16 19:28

在每个view函数中,第一个参数总是HttpRequest

HttpRequest对象包含当前请求URL的一些信息:

2
属性/方法说明举例request.path除域名以外的请求路径,以正斜杠开头"/hello/"request.get_host()主机名(比如,通常所说的域名)"127.0.0.1:8000" or"www.example.com"request.get_full_path()请求路径,可能包含查询字符串"/hello/?print=true"request.is_secure()如果通过HTTPS访问,则此方法返回True, 否则返回FalseTrue 或者 False

需要一个方法或属性去得到一个URL:

def  getUrl(requet):

return HttpResponse("Welcome to the page at %s" % request.path)

当访问不存在的键时,会触发keyError异常,使用get()方法来处理这些不存在的键

def ua_display_good2(request):    ua = request.META.get('HTTP_USER_AGENT', 'unknown')    return HttpResponse("Your browser is %s" % ua)

显示request.META下所有函数:

def display_meta(request):    values = request.META.items()    values.sort()    html = []    for k, v in values:        html.append('<tr><td>%s</td><td>%s</td></tr>' % (k, v))    return HttpResponse('<table>%s</table>' % '\n'.join(html))

使用表单提交数据的时候可以分为post提交和get提交

在view中可以时候用

request.GET['变量名']

去获取传来的值。


在处理结构复杂的数据时,可以选用django中自带的form库

from django import formsclass ContactForm(forms.Form):    subject = forms.CharField(**max_length=100** )    email = forms.EmailField(required=False)    message = forms.CharField(widget=forms.Textarea)

放在app下的一个forms.py文件中


自定义校验规则

Django的form系统自动寻找匹配的函数方法,该方法名称以clean_开头,并以字段名称结束。 如果有这样的方法,它将在校验时被调用。

   def clean_message(self):        message = self.cleaned_data['message']        num_words = len(message.split())        if num_words < 4:            raise forms.ValidationError("Not enough words!")        return message

我们简单地使用了len()和split()的组合来计算单词的数量。 如果用户输入字数不足,我们抛出一个forms.ValidationError型异常。这个异常的描述会被作为错误列表中的一项显示给用户。

3

在函数的末尾显式地返回字段的值非常重要。 我们可以在我们自定义的校验方法中修改它的值(或者把它转换成另一种Python类型)。 如果我们忘记了这一步,None值就会返回,原始的数据就丢失掉了。


原创粉丝点击