python-django-07
python-django-07
1、使用 forms 模块处理表单 1、forms 模块的作用 通过forms模块,允许将表单控件与py文件相结合 2、使用 forms 模块 1、创建 forms.py 文件 2、导入 forms from django import forms 3、创建class,一个class对应一个表单 该 class 必须继承自 forms.Form 4、在class中创建属性 一个属性对应一个表单控件 3、在模板中,解析 form 对象 1、注意 1、需要自定义 <form> 2、需要自定义 提交按钮 2、处理方法 1、手动解析 {%for filed in form%} <p>{{filed.label}}:{{field}}</p> {%endfor%} 2、自动解析 {{form.as_p}} {{form.as_ul}} - 需要自定义 ul {{form.as_table}} - 需要自定义 table 4、在HTML中提交的表单内容也可以传递给forms.Form views.py def remark_views(request): form = RemarkForm(request.POST) if form.is_valid():#必须要经过验证才能继续 cd = form.cleaned_data #封装了提交的数据 print(cd['uname']) 练习: 1、在 forms.py 中追加一个 RegisterForm 类 增加以下属性,并生成到 register.html 显示成表单控件 1、uname :文本框 2、upwd :文本框 / 密码框 3、uemail :邮件框 4、uage :文本框 2、在 regsiter.html 中 添加 <form> 和 提交按钮 3、点击提交时,将数据插入到数据库中 创建数据库 day8 ,创建Models-Users 5、forms 的高级处理 将 Models 和 Forms 结合到一起使用 通过Models 自动生成表单 1、创建 class ,EntryForm ,并继承自 forms.ModelForm 2、创建内部类 Meta ,并定义相关信息 1、model :指定关联的Models是谁 2、fields 1、指定一个列表,声明允许生成表单控件的属性 2、取值 "__all__",表示全部属性都允许被生成表单控件 3、labels - 字典 { '属性1':'显示文本1', '属性2':'显示文本2', } 6、内置小部件(widgets) 1、什么是小部件 生成到网页上的控件的类型 2、常用小部件 1、TextInput : type="text" 2、NumberInput : type="number" 3、EmailInput : type="email" 4、URLInput : type="url" 5、PasswordInput : type="password" 6、HiddenInput : type="hidden" 7、CheckboxInput : type="checkbox" 8、Textarea : <textarea></textarea> 9、Select : <select></select> 3、小部件的使用 1、继承自 forms.Form subject = forms.CharField( label='标题', widget=forms.TextInput( attrs={ '属性名':'属性值', 'class':'form-control', 'placeholder':'请输入用户名' } ) ) 2、继承自 forms.ModelForm class WidgetForm(forms.ModelForm): class Meta: model = Users fields = '__all__' labels = { 'uname':'...' } widgets = { 'uname':forms.TextInput(attrs={ 'class':'form-control', 'placeholder':'xxx' }) } select * from users where uphone='13912345678' and upass='fdafdsafdsafdsa' select * from users where uphone='13912345678'
cookies 和 session 1、cookies 1、什么是cookies cookies是一种数据存储技术 将一段文本保存在客户端(浏览器)的一种技术。并可以长时间的保存 2、cookies的使用场合 1、保存登录信息 2、保存用户的搜索关键词 3、django 中使用 cookies 1、设置cookies(保存数据到客户端) 1、不使用模板 resp = HttpResponse("给客户端的一句话") resp.set_cookie(key,value,expires) return resp key : cookie的名称 value : 保存的cookie的值 expires : 保存的时间,以 s 为单位 ex: resp.set_cookie('uname','zsf',60*60*24*365) 2、使用模板 resp = render(request,'xxx.html',locals()) resp.set_cookie(key,value,expires) return resp 3、重定向 resp = HttpResponseRedirect('/login/') resp.set_cookie(key,value,expires) return resp 练习: 1、完成登录操作 - fruitday 2、判断手机号 和 密码是否正确 3、如果正确的话,而且 勾选了 记住密码,则将登录信息保存进cookie,存期1年 2、获取cookies(从客户端获取数据) request.COOKIES 练习: 1、完成登录操作 - fruitday 2、当用户访问登录路径时,判断COOKIES中是否有登录的信息(id,uphone),如果存在,则提示 欢迎:13912345678。如果登录信息不存在的话,则正常显示 登录的页面 2、session - 会话 1、什么是session session(会话),实际上就是服务器为每个浏览器临时开辟的一段空间,用于保存 相关的请求信息 2、session的应用场合 session也是为了存放数据而存在的,通常会把服务器端要用到的数据保存进 session 3、Django中使用session 1、设置session的值 request.session['key']=值 request.session.set_expiry(time):设置过期时间,如果设置为0的话则表示浏览器关闭则失效 2、获取session的值 request.session.get('key') 3、删除 session 的值 del request.session['key'] 4、settings.py 有关session的设置 1、SESSION_COOKIE_AGE = 60 * 30 2、SESSION_EXPIRE_AT_BROWSER_CLOSE = True 练习: 1、设置一个访问路径 /login 2、当用户第一次访问 /login 的时候,则弹出登录页面 模拟登录:用户名为 zhangsanfeng,密码为 :yinsusu 视为登录成功 3、如果已经登录了,再访问 /login 的时候,则显示 :欢迎 xxx 回来 退出(超链接) 4、点击 退出时,允许退出登录。再访问 /login 的时候,则显示 登录页面
{
'uphone': '13912345678',
'id': '1',
'csrftoken': 'RHAjXX4I71ef8FjJnoalLJvsGdK7m2ECLTSDxjDOAA8aYgV07PA2Gev6MlhpGlZU'
}