Python Django开发 经验技巧总结(二)

1.模板中变量的运算

(1)加法

1{{value|add:value2}} 2#返回的结果是value+value2的值,假设你value为40,value2为60 ,则该表达式 3#返回结果为100

(2)减法

1{{value|add -value2}} 2#与加法的性质一样,只不过是把第二个参数变成负数进行运算,返回的结果是value-value2 3#假如value=4,value2=8,则返回的结果是-4

(3)乘法

1{% widthratio value1 value2 value3%} 2#上面的代码表示 value1/value2*value3,widthratio需要三个参数,进行乘法 只需将第二个参数等于1即可 3#例: value1=10 value2=1 value3=2 返回的结果为10/1*2=20

(4)除法

1{% widthratio value1 value2 value3%} 2#返回的结果是 (value1/value2)*value3 只需将value3等于1就能进行除法运算 3#例: value1=100 value2=20 value3=1 返回的结果为 (100/20)*1=5

2.getlist获取多个值

urls.py加一条路由视图:

1url(r'register',views.register),

主站views.py上加register函数:

1def register(request): 2 if request.method == "GET": 3 return render(request,'register.html') 4 elif request.method == "POST": 5 v = request.POST.get('gender') 6 f = request.POST.getlist('favor', '') 7 c = request.POST.get('city') 8 c2 = request.POST.getlist('city2') 9 print(v, f, c, c2) 10 return render(request, 'register.html')

register.html的配置:

1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6</head> 7 <link rel="stylesheet" href="/static/commons.css" /> 8<body> 9<form action="/zhuce" method="post"> 10 <p> 11 <input type="text" name="user" placeholder="用户名" /> 12 </p> 13 <p> 14 <input type="password" name="pwd" placeholder="密码" /> 15 </p> 16 <p> 17 男:<input type="radio" name="gender" value="1" /> 18 女:<input type="radio" name="gender" value="2"/> 19 人妖: <input type="radio" name="gender" value="3" /> 20 </p> 21 <p> 22 篮球:<input type="checkbox" name="favor" value="1"> 23 足球:<input type="checkbox" name="favor" value="2"> 24 排球:<input type="checkbox" name="favor" value="3"> 25 </p> 26 <p> 27 <select name="city"> 28 <option value="sh">上海</option> 29 <option value="bj">北京</option> 30 <option value="tj">天津</option> 31 </select> 32 </p> 33 <p> 34 <select name="city2" multiple> 35 <option value="sh">上海</option> 36 <option value="bj">北京</option> 37 <option value="tj">天津</option> 38 </select> 39 </p> 40 <p><input type="submit" value="提交"></p> 41 </form> 42 <script src="/static/jquery.min.js"></script> 43</body> 44</html>

后台数据 从django后台打印的post信息可以看到多选框里面的内容是列表的形式,request.POST.getlist()可以接收到所有共享同一个name的value。

3.查询集去重distinct()方式

1# 学习该课程的用户,首先获取该课程在UserCourse对应关系,然后查询UserCourse表中的所有用户,使用distinct()去重 2user_courses = UserCourse.objects.filter(course=course) 3print(user_courses) 4user_courses = user_courses.values('user__nick_name', 'user__username', 'user__image').distinct() 5print(user_courses)

结果

1<QuerySet [<UserCourse: admin 学习 Django入门基础>, <UserCourse: user 学习 Django入门基础>, <UserCourse: admin 学习 Django入门基础>]> 2<QuerySet [{'user__nick_name': 'LR', 'user__username': 'admin', 'user__image': 'image/2018/08/admin头像.jpg'}, {'user__nick_name': 'user', 'user__username': 'user', 'user__image': 'image/default.png'}]>

4.模板中的for循环计数实现自增

Django框架的模板提供了{% for %} 标签来进行循环 例如对集合进行循环如下

1{% for row in v1 %} 2 <div>{{row.name}}</div> 3{% endfor %}

  但是在Django中,并不直接支持形如"int i = 0;i<100;i++" 这样的循环,Django有自己的自增方法,假设v1内有2个元素: (1)从1开始正向自增 结果1,2

1{% for row in v1 %} 2 <div>{{forloop.counter}}</div> 3{% endfor %}

(2)从0开始正向自增 结果0,1

1{% for row in v1 %} 2 <div>{{forloop.counter0}}</div> 3{% endfor %}

(3)自减到1 结果2,1

1{% for row in v1 %} 2 <div>{{forloop.revcounter}}</div> 3{% endfor %}

(4),自减到0 结果1,0

1{% for row in v1 %} 2 <div>{{forloop.revcounter0}}</div> 3{% endfor %}

(5)是否是最后一个 结果False,True

1{% for row in v1 %} 2 <div>{{forloop.last}}</div> 3{% endfor %}

(6)是否是第一个 结果True,False

1{% for row in v1 %} 2 <div>{{forloop.first}}</div> 3{% endfor %}

(7)如果有多层循环,返回上层循环的全部取值的结果

1{% for i in v1 %} 2 {% for row in v1 %} 3   <div>{{forloop.parentloop}}</div> 4 {% endfor %} 5{% endfor %}

循环结果

5.查询数据库时,按照desc倒序返回数据

按照“ id ”从小到大查询数据

1projects = models.Project.objects.all().order_by("id")

或者

1projects = models.Project.objects.order_by("id")

从大到小排序:

1projects = models.Project.objects.all().order_by("-id")

或者

1projects = models.Project.objects.order_by("-id")

6.静态文件添加背景图片

创建一个子目录来存放图片,在这个目录中,放入一张图片background.jpg子目录 在样式表中添加

1body{background:url({% static 'images/background.jpg'%}) no-repeat;background-size:100% 100%;background-size:cover;}

重新加载http://127.0.0.1:8000/,你就会在页面上看到载入的背景图片。 背景

7.启动服务让其他电脑可访问

(1)修改 Django项目中的settings.py中的 ALLOWED_HOSTS 的值为 [*]

1# 准许那些地址访问,* 表示任意地址 2ALLOWED_HOSTS = ['*'] 3# ALLOWED_HOSTS = ['192.168.1.49', 'localhost', '127.0.0.1']

(2)使用命令启动服务:

1python manage.py runserver 0.0.0.0:8000

其他的电脑可通过访问启动服务的ip和端口即可打开网页、访问项目。 ※注意:开启服务的主机和申请访问的设备必须在同一局域网下,即具有相同的访问IP。

本文原文首发来自博客专栏Python Web开发实战,由本人转发至https://www.helloworld.net/p/9gGs7phjmiJ3,其他平台均属侵权,可点击https://blog.csdn.net/CUFEECR/article/details/104037074查看原文,也可点击https://blog.csdn.net/CUFEECR浏览更多优质原创内容。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

4cast

4castpackageloadcsv.KumarAwanish发布:2020122117:43:04.501348作者:KumarAwanish作者邮箱:awanish00@gmail.com首页: