您的位置:首页 > 编程语言 > Go语言

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]

更多见:http://docs.30c.org/djangobook2/chapter14/

应用

  

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、普通表单

2、Ajax

对于传统的form,可以通过表单的方式将token再次发送到服务端,而对于ajax的话,使用如下方式。

view.py

text.html

更多:https://docs.djangoproject.com/en/dev/ref/csrf/#ajax

13、中间件

简介

django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。

在django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件,如下图。



与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对象,则直接将该对象返回给用户。



自定义中间件

1、创建中间件类

2、注册中间件

14、admin

django amdin是django提供的一个后台管理页面,改管理页面提供完善的html和css,使得你在通过Model创建完数据库表之后,就可以对数据进行增删改查,而使用django admin 则需要以下步骤:

创建后台管理员

配置url

注册和配置django admin后台管理页面

1、创建后台管理员

2、配置后台管理url

3、注册和配置django admin 后台管理页面

a、在admin中执行如下配置

b、设置数据表名称

c、打开表之后,设定默认显示,需要在model中作如下配置

+ View Code

d、为数据表添加搜索功能

e、添加快速过滤

更多:http://docs.30c.org/djangobook2/chapter06/

完善主机管理系统:

登陆注册(利用ajax实现,使用onblur事件,检测当前用户名是否已经存在)

用户会话保持(Session)

Form验证用户输入

自定义中间件记录请求IP(或黑名单)

用户管理、用户组管理、主机管理(增删改查,分页)

自定义页面表格行数(可选)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: