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

CuterCorley 等级 977 0 0

1.模板中变量的运算

(1)加法

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

(2)减法

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

(3)乘法

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

(4)除法

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

2.getlist获取多个值

urls.py加一条路由视图:

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

主站views.py上加register函数:

def register(request):
    if request.method == "GET":
        return render(request,'register.html')
    elif request.method == "POST":
        v = request.POST.get('gender')
        f = request.POST.getlist('favor', '')
        c = request.POST.get('city')
        c2 = request.POST.getlist('city2')
        print(v, f, c, c2)
        return render(request, 'register.html')

register.html的配置:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
    <link rel="stylesheet" href="/static/commons.css" />
<body>
<form action="/zhuce" method="post">
        <p>
            <input type="text" name="user" placeholder="用户名" />
        </p>
        <p>
            <input type="password" name="pwd" placeholder="密码" />
        </p>
        <p>
            男:<input type="radio" name="gender" value="1" />
            女:<input type="radio" name="gender" value="2"/>
            人妖: <input type="radio" name="gender" value="3" />
        </p>
        <p>
            篮球:<input type="checkbox" name="favor" value="1">
            足球:<input type="checkbox" name="favor" value="2">
            排球:<input type="checkbox" name="favor" value="3">
        </p>
        <p>
            <select name="city">
                <option value="sh">上海</option>
                <option value="bj">北京</option>
                <option value="tj">天津</option>
            </select>
        </p>
         <p>
            <select name="city2" multiple> 
                <option value="sh">上海</option>
                <option value="bj">北京</option>
                <option value="tj">天津</option>
            </select>
        </p>
        <p><input type="submit" value="提交"></p>
    </form>
    <script src="/static/jquery.min.js"></script>
</body>
</html>

Python Django开发 经验技巧总结(二) 从django后台打印的post信息可以看到多选框里面的内容是列表的形式,request.POST.getlist()可以接收到所有共享同一个name的value。

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

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

结果

<QuerySet [<UserCourse: admin 学习 Django入门基础>, <UserCourse: user 学习 Django入门基础>, <UserCourse: admin 学习 Django入门基础>]>
<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 %} 标签来进行循环 例如对集合进行循环如下

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

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

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

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

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

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

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

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

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

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

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

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

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

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

{% for i in v1 %}
    {% for row in v1 %}
      <div>{{forloop.parentloop}}</div>
    {% endfor %}           
{% endfor %}

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

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

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

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

或者

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

从大到小排序:

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

或者

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

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

创建一个子目录来存放图片,在这个目录中,放入一张图片background.jpgPython Django开发 经验技巧总结(二) 在样式表中添加

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

重新加载http://127.0.0.1:8000/,你就会在页面上看到载入的背景图片。 Python Django开发 经验技巧总结(二)

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

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

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

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

python 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浏览更多优质原创内容。

收藏
评论区

相关推荐

Django的安装与简易使用
Django的安装与简易使用 1.Django的简介Django是有Python编写的一个开源代码Web应用框架(网址:https://github.com/django/django)。他是基于MTV模式,其本质与MVC是一样的。具体是:1. M 代表模型(Model):负责业务对象和数据库的关系映射(ORM)2. T 代表模板 (Template):负责
浅析常用的Python Web的几大框架
在各种语言平台中,python涌现的web框架恐怕是最多的,是一个百花齐放的世界,各种microframework、framework不可胜数;猜想原因应该是在python中构造框架十分简单,使得轮子不断被发明。所 以在Python社区总有关于Python框架孰优孰劣的话题。下面就给大家介绍一下python的几大框架: Django Django 应该是最出
Python项目实战——手把手教你使用Django框架实现支付宝付款
一、前言大家好,我是Python进阶者。春节即将过去,大家过年期间肯定各种掏腰包花花花,小编相信大家在支付时候,微信、支付宝支付肯定是优先选择。今天小编心血来潮,为大家带来一个很有趣的项目,那就是使用Python web框架Django来实现支付宝支付,废话不多说,一起来看看如何实现吧。 二、建立django应用我们来建立一个Django项目然后在里面创建
Asp.Net Core和Django如何选择
一、前言 ---- 最近经常听说“人生苦短,我选python”这句话,为什么python拥有如此多的粉丝,她和c#、java静态语言有哪些区别和优略呢?本篇将对python、c#主流的web框架Django和Asp.Net Core做一些分析,带给大家更多的技术认知。 ### 什么是Django Django是使用python语言开发的一套web框架,
Django 2.0.3安装
OS:Windows 10家庭中文版,CPU:Intel Core i5-8250U Python版本:Python 2.7,Python 3.6 Django版本:2.0.3(最新2.0.5) **解压工具:7-zip 64位版** 目标:将Django 2.0.3安装到Python 3.6 在看了一些文章后,发现安装Django的方式有两种:基
Django Drops
**1.Django Intro** ------------------ ![Django Archite](https://oscimg.oschina.net/oscnet/aa07f912f646b3bf567d5b9bba9398d1435.png) **2.Django Install** -------------------- ###
Django 多进程多线程的一些个人理解
### 一、Django 开发环境与生产环境 ##### 开发/调试 python manage.py runserver 0.0.0.0:8080 ##### 生产环境 Nginx + uWSGI + supervisor > 生产环境不用 `python manage.py runserver 0.0.0.0:8080` 的原
Django 常用命令
0\. 数据库表生成models.py ------------------- python manage.py inspectdb python manage.py inspectdb > {app}/models.py 1\. 新建一个 django project ----------------------- `django-a
Django.1
**Django官方网站:https://www.djangoproject.com/** **使用终端创建Django文件** * 创建工程 * django-admin startproject XXX * 创建应用 * python manage.py startapp YYY
Django学习笔记
1\. django-admin.py startproject mysite 2\. python manage.py help 3\. python manage.py runserver 4\. python 搜索路径为sys.path,运行时可追加目录至sys.path 5\. python模板使用: \>>> from django im
Django开发环境搭建
1、软件安装 Python下载地址:https://www.python.org/ 如果安装windows环境的python记得配置一下环境变量 Django下载地址:https://www.djangoproject.com/download/ 安装方法:解压后,进入命令行,切换到解压后的django目录下执行python setup.py ins
Flask
Python 现阶段三大主流Web框架 Django Tornado Flask 对比 =========================================== [**百度百科**](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fbaike.baidu.com%2Fitem
Python+Django+Eclipse开发环境搭建
一.介绍Python和Django的开发环境搭建     首先,从Python官网下载Python-2.7.10,直接双击安装运行。完成后添加环境变量到path:c:\\Python26;c:\\Python26\\Scripts; 这样就可以通过cmd进入命令行,直接输入python命令,会输出类似如下图片 ![](http://static.osc
Python开发环境(2):启动Eclipse时检测到PYTHONPATH发生改变
OS:Windows 10家庭中文版,Eclipse:Oxygen.1a Release (4.7.1a),PyDev:6.3.2 4月25日,在Eclipse上安装了PyDev(前面博文有记录),并开发了一个Python工程,当时并未尝试用之开发Django工程; 5月  2日,利用下载的Django安装包,在Python 3.6中安装了Django
Python接口自动化(二)接口开发
django * 配置开发环境 * 相关命令 * python manage.py runserver 127.0.0.1:8000 在指定的地址和端口启动服务 * python manage.py startapp api 生成django项目