Python基础(Django第二篇)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础(Django第二篇)相关的知识,希望对你有一定的参考价值。
一、Django路由系统
说明:Django中每一个请求的url必须有一个相应的函数来处理,当请求到达时会根据urls.py文件配置的规则从上往下匹配,匹配一条则不再往下匹配。
配置文件:urls.py
配置方式:
静态路由:一个url对应一个views中的函数。
例:url(r‘^index/$‘, views.index),
动态路由:多个URL对应一个views中的函数,此处的url多为正则匹配。
例:url(r‘^index/(.*)/$‘, views.index),
默认路由:当此条规则之上的所有规则都没有匹配上的时候,它会最终匹配所有。一般用于处理请求地址不存在的情况。
例:url(r‘.*‘, views.warn),
二、Django中间件
说明:django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。
配置文件:settings.py
配置方式:
MIDDLEWARE_CLASSES = (这里面配置的都是中间件)
中间件可以自定义,自定义的意义在于可以在每个请求达到或返回的时候做出一些自定义的处理操作。比如日志记录、IP限制等。
但是,这里不做描述。
三、Django缓存
说明:缓存的意义就是缓存(听上去好像是废话)。
1、配置(settings.py中加入)
CACHES = {
‘default‘: {
‘BACKEND‘: ‘django.core.cache.backends.filebased.FileBasedCache‘,#使用文件缓存
‘LOCATION‘: os.path.join(BASE_DIR, ‘cache‘), #文件名为cache
‘TIMEOUT‘: 600, #缓存超时时间为600秒
‘OPTIONS‘: {
‘MAX_ENTRIES‘: 1000 #最大缓存条目数为1000
}
}
}
2、应用
from django.shortcuts import render, HttpResponse
from django.views.decorators.cache import cache_page
@cache_page(60 * 15) #以装饰器的形式配置,在哪个函数上面,就缓存哪个函数return的数据
def func(request):
return HttpResponse(‘xxx‘)
四、cookie和session
说明:cookie是一个字符串,保存于客户端(浏览器)本地(根据cookie类型的不同可保存在内存,也可保存在硬盘)。
session保存在服务器端,存储与客户端会话的所有信息。
在Django中的用处:
1、用于判断用户是否已登录
2、根据不同的用户返回不同的内容
工作原理:
当客户端(浏览器)访问服务器时,服务器会为本次会话创建一个Seesion,同时生成一个唯一的SessionID,用该SessionID为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,也就是保存在Cookie中,用户提交请求时,会同时将这一SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。
用法:
1、request.session[‘username‘] = username #往session中存储一个值(key,value的方式存储)
2、request.session.get(‘username‘) #根据key从session中获取一个值
3、del request.session[‘username‘] #根据key从session中删除一个值
五、Form
说明:Django的Form有两种功能:
1、验证用户输入
2、输出html
例子:
views.py
from django.shortcuts import render, render_to_response from django.http import HttpResponse,HttpResponseRedirect from django import forms #导入forms模块 class Userinfo(forms.Form): #定义一个类 类继承forms.Form email = forms.EmailField(required=False) #required=False表示该字段可以为空 name = forms.CharField() pwd = forms.CharField() def login(req): obj = Userinfo() #实例化一个对象 if req.method == ‘POST‘: user_input_obj = Userinfo(req.POST) #获取form生成的整个html代码以及客户端输入的内容 if user_input_obj.is_valid(): #is_valid方法用于判断客户端提交的内容是否符合要求(比如不能为空的是否为空) data = user_input_obj.clean() #获取客户端手动输入的内容(字典形式) if data[‘name‘] == ‘test‘ and data[‘pwd‘] == ‘123‘: req.session[‘IS_LOGIN‘] = True #往session中存储一个值 return HttpResponseRedirect(‘/home/‘) else: return HttpResponse(‘Login error !‘) else: error_msg = user_input_obj.errors #客户端输入错误的提示信息 return render_to_response(‘login.html‘,{‘obj‘:user_input_obj,‘errors‘:error_msg}) return render_to_response(‘login.html‘,{‘obj‘:obj})
login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form action="/login/" method="post"> <!--后台返回的对象自动生成页面 其中name、pwd、email分别为类的三个字段--> <p>用户名:{{ obj.name }} <span>{{ errors.name }}</span></p> <p>密码:{{ obj.pwd }} <span>{{ errors.pwd }}</span></p> <p>邮箱:{{ obj.email }} <span>{{ errors.email }}</span></p> <input type="submit" value="Submit"> </form> </body> </html>
本篇博客的部分内容和思路整理自武沛齐的博客。
本文出自 “一行菜鸟上青天” 博客,请务必保留此出处http://rmeos.blog.51cto.com/761575/1752521
以上是关于Python基础(Django第二篇)的主要内容,如果未能解决你的问题,请参考以下文章