其他分享
首页 > 其他分享> > 04 Django 模板

04 Django 模板

作者:互联网

{{模板变量名}}

{% 代码段 %}

{% for x in 列表 %}

# 列表不为空时执行

{% empty %}

# 列表为空时执行

{% endfor %}

{% if 条件 %}

{% elif 条件 %}

{% else %}

{% endif %}

模板变量|过滤器:参数

#导入Library类

from django.template import Library

   

#创建一个Library类对象

register=Library()

   

#使用装饰器进行注册

@register.filter

#定义求余函数mod,将value对2求余

def iseven(value):

return value%2 == 0

  

{%load filters%}

显示 id 为偶数的图书

<ul>

{% for book in books %}

{% if book.id|iseven %}

<li class="red">{{ book.id }}--{{book.btitle}}--

{{ book.bpub_date|date:"Y 年 m 月 d 日" }}</li>

{% endif %}

{% endfor %}

</ul>

@register.filter

def mod(num, dividend):

"""判断 num 是否能被 dividend 整除"""

return num % dividend == 0

显示 id 能被 3 整除的图书

<ul>

{% for book in books %}

{% if book.id|mod:3 %}

<li class="red">{{ book.id }}--{{book.btitle}}--

{{ book.bpub_date|date:"Y 年 m 月 d 日" }}</li>

{% endif %}

{% endfor %}

</ul>

{# 注释内容 #}

{% comment %}

注释内容

{% endcomment %}

{% block 块名 %}

块中间可以写内容,也可以不写

{% endblock 块名%}

{% extends 父模板文件路径%} 

{% block 块名 %}

{{ block.super}} #获取父模板中块的默认内容

重写的内容

{% endblock 块名%}

{{ 模板变量|safe}}

{% autoescape off %}

模板语言代码

{% endautoescape %}

模板硬编码不转义:{{data|default:'<b>hello</b>'}}

<br />

模板硬编码手动转义:{{data|default:"&lt;b&gt;123&lt;/b&gt;"}}

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>发帖页</title>

</head>

<body>

<form method="post" action="/post_action/">

{% csrf_token %}

标题:<input type="text" name="title"/><br/>

内容:<textarea name="content"></textarea>

<input type="submit" value="发帖"/>

</form>

</body>

</html>

pip install Pillow==3.4.1

from PIL import Image, ImageDraw, ImageFont

from django.utils.six import BytesIO

...

def verify_code(request):

#引入随机函数模块

import random

#定义变量,用于画面的背景色、宽、高

bgcolor = (random.randrange(20, 100), random.randrange(

20, 100), 255)

width = 100

height = 25

#创建画面对象

im = Image.new('RGB', (width, height), bgcolor)

#创建画笔对象

draw = ImageDraw.Draw(im)

#调用画笔的point()函数绘制噪点

for i in range(0, 100):

xy = (random.randrange(0, width), random.randrange(0, height))

fill = (random.randrange(0, 255), 255, random.randrange(0, 255))

draw.point(xy, fill=fill)

#定义验证码的备选值

str1 = 'ABCD123EFGHIJK456LMNOPQRS789TUVWXYZ0'

#随机选取4个值作为验证码

rand_str = ''

for i in range(0, 4):

rand_str += str1[random.randrange(0, len(str1))]

#构造字体对象,ubuntu的字体路径为"/usr/share/fonts/truetype/freefont"

font = ImageFont.truetype('FreeMono.ttf', 23)

#构造字体颜色

fontcolor = (255, random.randrange(0, 255), random.randrange(0, 255))

#绘制4个字

draw.text((5, 2), rand_str[0], font=font, fill=fontcolor)

draw.text((25, 2), rand_str[1], font=font, fill=fontcolor)

draw.text((50, 2), rand_str[2], font=font, fill=fontcolor)

draw.text((75, 2), rand_str[3], font=font, fill=fontcolor)

#释放画笔

del draw

#存入session,用于做进一步验证

request.session['verifycode'] = rand_str

#内存文件操作

buf = BytesIO()

#将图片保存在内存中,文件类型为png

im.save(buf, 'png')

#将内存中的图片数据返回给客户端,MIME类型为图片png

return HttpResponse(buf.getvalue(), 'image/png')

url(r'^verify_code/$', views.verify_code),

def verify_show(request):

return render(request,'booktest/verify_show.html')

url(r'^verify_show/$', views.verify_show),

<html>

<head>

<title>验证码</title>

</head>

<body>

<form method="post" action="/verify_yz/">

{%csrf_token%}

<input type="text" name="yzm">

<img id="yzm" src="/verify_code/">

<span id="change">看不清,换一个</span>

<br>

<input type="submit" value="提交">

</form>

</body>

</html>

def verify_yz(request):

yzm=request.POST.get('yzm')

verifycode=request.session['verifycode']

response=HttpResponse('no')

if yzm==verifycode:

response=HttpResponse('ok')

return response

url(r'^verify_yz/$', views.verify_yz),

url(r'^',include('booktest.urls',namespace='booktest')),

url(r'^fan2/$', views.fan2,name='fan2'),

app_name = 'cart'

<html>

<head>

<title>反向解析</title>

</head>

<body>

普通链接:<a href="/fan2/">fan2</a>

<br>

反向解析:<a href="{%url 'booktest:fan2'%}">fan2</a>

</body>

</html>

url(r'^fan_show/$', views.fan2,name='fan2'), 

from django.shortcuts import redirect

from django.core.urlresolvers import reverse

   

return redirect(reverse('booktest:fan2'))

{% url 'namespace名字:name' %} 例如{% url 'booktest:fan2'%} 

{% url 'namespace名字:name' 参数 %} 例如{% url 'booktest:fan2' 1 2%}

{% url 'namespace名字:name' 关键字参数 %} 例如{% url 'booktest:fan2' id=1 name='lijunjie'%} 

from django.core.urlresolvers import reverse 

reverse('namespace名字:name名字') 

reverse('namespace名字:name名字', args = 位置参数元组) 

reverse('namespace名字:name名字', kwargs=字典) 

 

标签:name,04,url,verify,booktest,book,Django,模板
来源: https://www.cnblogs.com/lijunjie9502/p/10981732.html