Django基础(二)
2016-06-05 20:41
489 查看
7、Model连表操作
指定映射连表条件
一对一
多对多
def publish(request): ret = {'status': False, 'data': '', 'error': '', 'summary': ''} if request.method == 'POST': request_form = PublishForm(request.POST) if request_form.is_valid(): request_dict = request_form.clean() print request_dict ret['status'] = True else: error_msg = request_form.errors.as_json() ret['error'] = json.loads(error_msg) return HttpResponse(json.dumps(ret)) views
View Code
扩展:ModelForm
在使用Model和Form时,都需要对字段进行定义并指定类型,通过ModelForm则可以省去From中字段的定义
9、分页
分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该在数据库表中的起始位置。1、设定每页显示数据条数
2、用户输入页码(第一页、第二页...)
3、根据设定的每页显示条数和当前页码,计算出需要取数据表的起始位置
4、在数据表中根据起始位置取值,页面上输出数据
需求又来了,需要在页面上显示分页的页面。如:[上一页][1][2][3][4][5][下一页]
1、设定每页显示数据条数
2、用户输入页码(第一页、第二页...)
3、设定显示多少页号
4、获取当前数据总条数
5、根据设定显示多少页号和数据总条数计算出,总页数
6、根据设定的每页显示条数和当前页码,计算出需要取数据表的起始位置
7、在数据表中根据起始位置取值,页面上输出数据
8、输出分页html,如:[上一页][1][2][3][4][5][下一页]
创建处理分页数据的类
根据分页数据获取数据
输出分页HTML,即:[上一页][1][2][3][4][5][下一页]
10、Cookie和Session
操作Cookie
获取cookie:request.COOKIES[key]设置cookie:response.set_cookie(key,value)
由于cookie保存在客户端的电脑上,所以,jquery也可以操作cookie。
操作Session
获取session:request.session[key]设置session:reqeust.session[key] = value
删除session:del request[key]
应用
11、Ajax
12、跨站请求伪造
简介
django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成。而对于django中设置防跨站请求伪造功能有分为全局和局部。全局:
中间件 django.middleware.csrf.CsrfViewMiddleware
局部:
@csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件。
@csrf_exempt,取消当前函数防跨站请求伪造功能,即便settings中设置了全局中间件。
注:from django.views.decorators.csrf import csrf_exempt,csrf_protect
应用
1、普通表单对于传统的form,可以通过表单的方式将token再次发送到服务端,而对于ajax的话,使用如下方式。
view.py
13、中间件
简介
django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。在django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件,如下图。
![](https://images0.cnblogs.com/blog/425762/201411/102231043354970.png)
与mange.py在同一目录下的文件夹 wupeiqi/middleware下的auth.py文件中的Authentication类
中间件中可以定义四个方法,分别是:
process_request(self,request)
process_view(self, request, callback, callback_args, callback_kwargs)
process_exception(self, request, exception)
process_response(self, request, response)
以上方法的返回值可以是None和HttpResonse对象,如果是None,则继续按照django定义的规则向下执行,如果是HttpResonse对象,则直接将该对象返回给用户。
![](https://images0.cnblogs.com/blog/425762/201411/101822420536468.png)
自定义中间件
1、创建中间件类14、admin
django amdin是django提供的一个后台管理页面,改管理页面提供完善的html和css,使得你在通过Model创建完数据库表之后,就可以对数据进行增删改查,而使用django admin 则需要以下步骤:创建后台管理员
配置url
注册和配置django admin后台管理页面
1、创建后台管理员
a、在admin中执行如下配置
d、为数据表添加搜索功能
完善主机管理系统:
登陆注册(利用ajax实现,使用onblur事件,检测当前用户名是否已经存在)
用户会话保持(Session)
Form验证用户输入
自定义中间件记录请求IP(或黑名单)
用户管理、用户组管理、主机管理(增删改查,分页)
自定义页面表格行数(可选)
相关文章推荐
- Django基础(一)
- Google I/0 2016 Highlights
- STL 简单 <stl_algorithms.h> 算法的实现
- Django完整的开发一个博客系统
- Django完整的开发一个博客系统
- CEPH CRUSH 算法源码分析 原文CEPH CRUSH algorithm source code analysis
- golang学习笔记
- 2016-计蒜之道-初赛-第二场-A-联想公司的logo设计
- go的自定义结构跨包调用
- GameplayKit Tutorial: Entity-Component System, Agents, Goals, and Behaviors
- Django开发自己的博客系统
- Django开发自己的博客系统
- ContentNegotiatingViewResolver解析器
- Hirschberg's algorithm to find string alignment
- thinkpad x200开机卡logo画面
- 关于DNF金刚Go游戏的决策实践
- Manacher解决最长回文子串
- golan的template包中的eq函数的用法
- 感知器算法(perceptron algorithm)
- PyCharm 开发Django ,错误汇总