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部分
#说明第二个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单和多..............