Django 安全

以下是关于Django安全的一些特征,它包括如何使基于Django的网站的一些建议。

关于安全的官方文档:https://docs.djangoproject.com/en/dev/#security

官方文档包括以下几个方面:

Django表单用在模版中的时候我们会加一句{% csrf_token %}

Django 国际化

Django官方教程:https://docs.djangoproject.com/en/1.7/#internationalization-and-localization

Django支持国际化,多语言。Django的国际化是默认开启的,如果您不需要国际化支持,那么您可以在您的设置文件中设置USE_I18N = False,那么Django会进行一些优化,不加载国际化支持机制。

NOTE: 18表示Internationlization这个单词首字母I和结尾字母N之间的字母有18个。I18N就是Internationlization的意思。

Django完全支持文本翻译,日期时间数字格式和时区。

本质上讲,Django做了两件事:

1、它允许开发者指定要翻译的字符串

2、Django根据特定的访问者的偏好设置,进行调用相应的翻译文本。

开启国际化的支持,需要在settings.py文本中设置

MIDDLEWARE_CLASSES = (
...
'django.middleware.locale.LocaleMiddleware',
) LANGUAGE_CODE = 'en'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True LANGUAGES = (
('en', ('English')),
('zh-cn', ('中文简体')),
('zh-tw', ('中文繁體')),
) #翻译文件所在目录,需要手工创建
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
) TEMPLATE_CONTEXT_PROCESSORS = (
...
"django.core.context_processors.i18n",
)

生成需翻译的文本

django-admin.py makemessages -l zh-cn
django-admin.py makemessages -l zh-tw

手工翻译locale中的文本后,我们需要编译以下,这样翻译才会生效

django-admin.py compilemessages

Django session

Django 完全支持也匿名会话,简单说就是使用跨网页之间可以进行通讯,比如显示用户名,用户是否已经发表评论,session框架让你存储盒获取访问者的数据信息,这些信息保存在服务器上(默认是数据库中),以cookies的方式发送和获取一个包含session ID的值,并不是用cookies传递数据本身。

启用session

编辑settings.py中的一些配置

MIDDLEWARE_CLASSES确保其中包含以下内容

'django.contrib.sessions.middleware.SessionMiddleware',

INSTALLED_APPS是包含

'django.contrib.sessions',

这些是默认启用的。如果你不用等话,也可以关掉这个以节省一点服务器的开销。

提示:您也可以配置使用比如cache来存储session

在视图中使用session

request.session可以在视图中任何地方使用,它类似于python中的字典

session默认有效时间为两周,可以在settings.py中修改默认值:参加这里

# 创建或修改 session:
request.session[key] = value
# 获取 session:
request.session.get(key,default=None)
# 删除 session
del request.session[key] # 不存在时报错

session例子

比如写一个不让用户评论两次的应用:

from django.http import HttpResponse

def post_comment(request, new_comment):
if request.session.get('has_commented', False):
return HttpResponse("You've already commented.")
c = comments.Comment(comment=new_comment)
c.save()
request.session['has_commented'] = True
return HttpResponse('Thanks for your comment!')

一个简化的登陆认证:

def login(request):
m = Member.objects.get(username=request.POST['username'])
if m.password == request.POST['password']:
request.session['member_id'] = m.id
return HttpResponse("You're logged in.")
else:
return HttpResponse("Your username and password didn't match.") def logout(request):
try:
del request.session['member_id']
except KeyError:
pass
return HttpResponse("You're logged out.")

当登陆时验证用户名和密码,并保存用户id在session中,这样就可以在视图中使用request.session['member_id']来检查用户是否登陆,当退出的时候,删除掉它。

Django:之安全、国际化和session的更多相关文章

  1. django设置并获取cookie/session,文件上传,ajax接收文件,post/get请求及跨域请求等的方法

    django设置并获取cookie/session,文件上传,ajax接收文件等的方法: views.py文件: from django.shortcuts import render,HttpRes ...

  2. {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

    Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...

  3. django(五):cookie和session

    一.Cookie 1.cookie机制 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确 ...

  4. Django框架 之 Cookie、Session整理补充

    Django框架 之 Cookie.Session整理补充 浏览目录 Django实现的Cookie Django实现的Session 一.Django实现的Cookie 1.获取Cookie 1 2 ...

  5. 【python】-- Django 分页 、cookie、Session、CSRF

    Django  分页 .cookie.Session.CSRF 一.分页 分页功能在每个网站都是必要的,下面主要介绍两种分页方式: 1.Django内置分页 from django.shortcuts ...

  6. Django框架 之 Cookie和Session初识

    Django框架 之 Cookie和Session初识 浏览目录 Cookie介绍 Django中的Cookie Session 一.Cookie介绍 1.Cookie产生的意义 众所周知,HTTP协 ...

  7. Django简单设置cookies和session

    一.Cookie cookie及特点 Cookie是由服务器(网站)生成的,存储在浏览器端的 键值对数据(通常经过加密) 在响应请求时,服务器会把生成 Cookie数据 发给浏览器,浏览器会自动保存( ...

  8. Django框架07 /cookie和session

    Django框架07 /cookie和session 目录 Django框架07 /cookie和session 1. django请求生命周期 2. cookie 3. session 4. 总结 ...

  9. 第六章:Django 综合篇 - 6:会话session

    因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的.通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于静 ...

随机推荐

  1. 【 转】 C/C++结构体和联合体的区别

    联合体用途:使几个不同类型的变量共占一段内存(相互覆盖) 结构体是一种构造数据类型用途:把不同类型的数据组合成一个整体-------自定义数据类型 总结: 声明一个联合体: union abc { i ...

  2. Angularjs directive全面解读(1.4.5)

    说到Angularjs directive即指令,可以这么说Angularjs的灵魂就是指令,学会Angularjs指令那么你的Angularjs的武功就修炼了一半了,当然这只是鄙人的一点点独到见解, ...

  3. ios @property

    参考资料 http://blog.csdn.net/pingchangtan367/article/details/14000315 http://blog.csdn.net/xdrt81y/arti ...

  4. js--学习方法之2-转

    再说几点忠告 1,不要着急看一些复杂网页效果的代码,这样除了打击你自信心,什么也学不到.没达到一定的武功水平,割了小JJ也学不会葵花宝典的. 2,别急着加技术交流QQ群,加牛人QQ.如果你找张三丰交流 ...

  5. Node.js:常用工具util

    概要:本篇博客的主要内容是介绍node.js的常用工具util. 1.util.inherits util.inherits(constructor,superConstructor)是一个实现对象间 ...

  6. php基本(四)表单验证

    本文内容来自http://www.w3school.com.cn/php/php_form_url_email.asp PHP 表单验证 - 验证 E-mail 和 URL 本节展示如何验证名字.电邮 ...

  7. Java 集合 fail-fast机制 [ 转载 ]

    Java 集合 fail-fast机制 [转载] @author chenssy 摘要:fail-fast产生原因.解决办法 在JDK的Collection中我们时常会看到类似于这样的话: 例如,Ar ...

  8. satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod-usb-storage:

    卸载了包 : opkg remove kmod-ath9k - 3.10.49+2014-05-22-1 重新进行安装时出现如下错误: root@hbg:/tmp# opkg install /tmp ...

  9. osg + cuda

    #include <osg/Notify> #include <osgViewer/Viewer> #include <osgCompute/Memory> #in ...

  10. CreateProcess注意的几个地方

    1.CreateProcess失败,GetLastError返回998,应该是最后两个参数没有初始化导致的. 2.要使外部程序隐藏窗口运行,需要将STARTUPINFO的dwFlags指定为START ...