模板操作

模板_模板文件的使用

from django.template import loader,RequestContext
from django.http import HttpResponse
#/index
def index(request):
     #1.加载模板文件,获取一个模板对象
     temp=Loader.get_template('booktest/index.html')
     #2.定义模板上下文,给模板文件传数据
     context = RequestContext(request,{})
     #3.模板渲染,产生一个替换后的html内容
     res_html=temp.render(context)
     #4.返回应答
     return HttpResponse(res_html)
     

url的配置
主配置文件:

urlpatterns=[
	 url(r'^',include('booktest.url')),
	 url(r'^'admin/,include('admin.site.urls')),
	 
]

本应用的配置文件:

from django.conf.urls import url
from booktest import views

urlpattern=[
	 url(r'^index$',view.index)
]

因为每一个view都得生成一个模板对象,所以对此进行封装操作

def render(request,template_path,context={}):
	  #1.加载模板文件,获取一个模板对象
     temp=Loader.get_template(template_path)
     #2.定义模板上下文,给模板文件传数据
     context = RequestContext(request,context)
     #3.模板渲染,产生一个替换后的html内容
     res_html=temp.render(context)
     #4.返回应答
     return HttpResponse(res_html)	


#/index
def index(request):
	 return render(request,'booktest/index.html')
	 

模板文件的加载顺序

1)首先去配置的模板目录下面去找模板文件
2)去INSTALL_APPS下面的每个应用中找模板文件,前提是每个应用中具有template文件夹

#/index2
def index2(request):
	 return render(request,'booktest/index2.html')
from django.conf.urls import url
from booktest import views

urlpattern=[
	 url(r'^index2$',view.index)
]

报错信息:
在这里插入图片描述

模板变量

过滤器:

<li class="red">{{book.title}}---{{book.bpubdate|date:'Y年-m月-d日'}}</li>

模板注释

<li class="red">{{book.title|length}}---{{book.bpubdate|date:'Y年-m月-d日'}}</li>

设置默认值

{{content |default:'hello'}}

模板转义

def html_escapse(request):
	return  render(request,'booktest/html_escapse.html','{'content':'<h1>hello</h1>'}')

关闭模板文件内的转义

{{content|safe}}</br>

{% autoescapse on%}
{%endautoescapse%}

{% autoescapse off%}
{%endautoescapse%}

#定义装饰器

def login_required(view_func):
	'''登录装饰器'''
	def wrapper(request,*view_args,**view_kwargs): 
	#判断用户是否登录	
		if request.session_has_key('islogin'):
		 	  #用户已登录,调用对应的视图
		 	return view_fun(request,*view_args,**view_kwrags)
		      #用户未登录,跳转到登录页面
		else:
			return redirect('/login')
	return wrapper


@login_required
def change_pwd(request):
	return render(request,'booktest/change_pwd.html')

静态文件

{% load staticfiles %}


<img src={% static 'images/mm.jpg' %} />

中间件

def index(request):
		#获取用户ip
		user_ip = request.META(’REMOTE_ADDR‘)	

middleware.py

from django.http import HttpResponse

class BlockedIPSMiddleware(object):
	''中间件'
	EXLUDE_IPS = ['']
	
	def process_view(self,request,view_args,**view_kwargs):
		'''视图函数调用h之前会调用'''
		user_ip=request.META['REMOTE_ADDR']
		if user_ip in BlockedIPSMiddleware.EXLLUDE_IPS:
			return HttpResponse('booktest/index.html')
			

配置文件中的书写
在这里插入图片描述

中间件流程

class TestMiddleware(object):
	 def ————init__(self):
		'''服务器重启之后,接受第一个请求时调用'''
		print('____intit___')
	 def process_request(self,request):
	 	'''产生request对象之后,url匹配之前调用'''
	 	print('----proces_request----')
	 def process_view(self,request,view_func,*view_args):
	 	'''url匹配之后,视图函数调用之前调用'''
	 	print('-----process_view----')
	 def process_response(self,request,response):
	 	'''视图函数调用之后,内容返回之前'''
	 	print(’----process_response---‘)
		return response

调用过程
在这里插入图片描述
在这里插入图片描述

class ExceptionTest1Middleware(object):
	def process_Exception(self,request,exception):
		'''异常函数发生时开始调用'''
		print('-----process_Exception')

class ExceptionTest2Middleware(object)
	def process_Exception(self,request,exception):
	   print('------process_Exception---')
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值