Django form

HttpRequest包含当前请求的一些信息

request.path去除域名一些URL信息/blog/ ***域名这种不可以直接暴露,可以用做变量传参***

request.get_host()获取域名 localhost:8000

request.get_full_path()获取完整的请求路径

request.is_secure()是否通过了HTTP验证,通过返回True,不通过返回False

request.META包含header和user_Agent等信息,其中header是用户的浏览器所提交的,不值得信息,要包裹try-except代码块

HTTP_USER_AGENT

request.GET request.POST 里面也有get() key() value()方法,都是类字典对象

contact.html body部分

Subject:

You-email:

Message:

{#

#}
{{ form.as_table }}
提交
#说明第二个form和和第一个URL指向的是同一个,这个页面绑定了两个指向这个页面的view函数,第一个在URL.py里面指定了url第二个也就不用了

下面,说一说django的forms类

forms.Form表单类建立一个表单

class contact_us(forms.Form):
    subject=forms.CharField()
    email=forms.EmailField(required=False)
    message=forms.CharField()
#在哪里写无所谓,可以和实例的方法放在一起,省的import

#表单验证的方法,简单的前面有一个contact是直接从POST里面拿出来的,urls.py已经定义好了,因此不必再定义
#forms有好多种属性和方法,是一个dictionary....
def contact_re(request):
    if request.method=='POST':
        form=contact_us(request.POST)
        if form.is_valid():
            cd=form.cleaned_data
            send_mail(cd['subject'],cd['email'],cd.get('email','********@163.com'),['**********@163.com'],)
            return HttpResponseRedirect('/contact/thanks')
    else:
        form=contact_us()
        return render_to_response('contact_form.html',{'form':form})

属性或是方法有

f = ContactForm({'subject': 'Hello', 'email': '[email protected]', 'message': 'Nice site!'})
一旦对form赋值就相当于
f.is_bound<-True
f.is_valid 是否合法,意思是该输入的东西有没有被赋值,required=False,就是不必要赋值
#可以逐一查找每个字段的错误消息
f['subject'].errors,或者查看所有的errors信息,f.errors
#如果被验证最终是合法的会有个cleaned_data属性
f.cleaned_data
#使属性变成复数形式....嗯...就是变成第三人称单数的意思..嗯..过滤器..pluralize 变成***s
{% if form.errors %}
    

Please correct the error {{ form.errors|pluralize }}below

{% endif %}

嗯..用Forms来提醒自己??????....

class contact_us(forms.Form):
    subject=forms.CharField(max_length=100)
    email=forms.EmailField(required=False)
    message=forms.CharField(widget=forms.Textarea)
##可以输入的最大长度和显示message是一个textarea.......

form=contact_us(
            #设置初始值
            initial={'subject':'I love this book'}
        )
#复选
#单选
city = fields.ChoiceField(
        choices=((1, '上海'), (2, '北京'),),
        widget=widgets.Select
    )
city = fields.ChoiceField(
        choices=((1, '上海'), (2, '北京'),),
        widget=widgets.RadioSelect
    )
city = fields.ChoiceField(
        #choices=((1, '上海'), (2, '北京'),),
        widget=widgets.Select(choices=((1, '上海'), (2, '北京'),),)
    )
CheckboxSelectMultiPle
单选Ratio,select多选和单选,checkbox单和多..............

 

你可能感兴趣的:(Python)