Django前端获取后端数据之前端自定义函数

摘要:
无法直接使用键获取值值。如果它作为列表传递到前端,本文将编写一个函数来获取带有键的值。1.在应用程序中创建新的模板标记文件。templatetags文件url.py和views.py的级别与下图相同。名为west的应用程序的目录结构应确保该应用程序已写入整个Django项目的INSTALLED中_在APPS中,

在写网站的时候遇到了一个问题:

Django在后端向前端传数据时,多数会使用dict字典来传送多个数据,但前端只能遍历,没有一个用key取到value值的方法可以直接使用

如果作为一个list传递到前端,结构相同情况下,遍历确实够用。但是使用dict时多数会使用单个key取value放到不同的地方使用,Django提供的方法就不够用了。

所以这篇文章介绍一下如何创建一个自定义函数供使用,此文中写了一个用key取到value值的函数

1、在某个app中创建一个新的templatetags 文件,templatetags 文件与url.py、views.py同级

  下图为名为west的app目录结构

Django前端获取后端数据之前端自定义函数第1张

要保证这个app已经写到了整个Django项目的INSTALLED_APPS中,在Django项目根路径下的settings.py文件中文件中查看此app是否已经加入整个项目,如果没有则添加上,代码如下
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'west',   #此处就是这个app的名字
]

  

2、然后在此目录下新建两个py文件,__init__.py和一个自定义的py文件。如下图

Django前端获取后端数据之前端自定义函数第2张

  

  __init__.py文件是让Django框架知道这是一个Python package,里面不需要写代码,但是不能没有这个文件。因为第一步中已经确定了app已经添加到INSTALLED_APPS中,所以这个package也被项目纳入其中。

  dict_fun.py则是自己写的方法文件

  dict_fun.py文件如下,其中需要注意的地方已经注释

from django import template

register = template.Library() #以上两行代码是获取到Django模板所有tags和filter的library,以便我们写入一个新的方法

def dict_get(adict, key):   #自定义方法,adict是我们使用这个方法的调用者,key是dict_get方法的参数,如果不太懂,接着往下看
    """get the value using key from a dict"""
    return dict(adict).get(key)
register.filter('dict_get', dict_get) #将此方法添加到模板中 

  

 3、前端使用自定义方法

  首先在模板(一般是html)中添加一个标签,使刚才写的方法引入,注意此处的dict_fun对应的是在第一步中创建的dict_fun.py

{% load dict_fun %}

  {{ a }}在django框架中便是使用后端传递过来数据的写法。

  使用自己写的函数如下,可能一开始看起来并没有那么易懂。

{{ adict|dict_get:"pic" }}

  dict是后端传过来的数据,dict_get是在dict_fun.py中定义的函数,“pic”是dict_get方法的参数。一句话概括就是:adict使用函数dict_get(),参数为“pic”

  还记得dict_get()方法在定义的时候有两个参数吗?其实第一个参数是调用者,被写在了参数列表中

参考链接:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#registering-custom-filters

免责声明:文章转载自《Django前端获取后端数据之前端自定义函数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PADS铺铜说明vim中systemverilog的高亮显示下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

spring boot 访问页面(静态页面及jsp页面)

1.访问静态html 页面 ,使用官网提供的demo和还是一直访问不到html ,后来使用thymeleaf 模板,引入了依赖,发现html也能正常访问了 a) main/resource  文件夹下新建一个templates 文件夹 b) 添加maven 依赖 c) 编写控制方法 启动之后访问 localhost:prot/index 就能访问到页...

Xcode插件管理

 在使用Xcode的时候,公司同事使用/// 和//TODO 就能打出很多注释信息。虽然他们帮忙给我也装了,但是我却不知道怎么弄的。今天在家无聊,过来自己实践了一把。  so easy。 1.我使用的是Package Manager for Xcode。这时,我们要使用要将它下载下来,并且装入到Xcode里面。 原本以为会很繁琐,结果一句话就搞定了。 官网...

FastAPI框架快速构建高性能的api服务

https://cloud.tencent.com/developer/article/1431448 使用FastAPI可以非常快速的构建出一套高性能的api服务。下面通过实战演示一下: fastapi目前仅支持python 3.6+以上版本。 一、安装fastapi和uvicorn pip install fastapi pip install uvi...

JSON文件内容加注释的几种方法

JSON规范,不支持注释。之所以不允许加注释,主要是防止:过多的注释,影响了文件本身的数据载体的目的。 有些文件,尤其是配置文件,加入解释说明一些数据项的含义,是有必要的。 1、使用JSON5规范      JSON5规范允许在JSON文件中加入注释:单行注释,多行注释均可。 2、直接用json-schema,使用规范中的注释字段      优点:功能强...

app项目实战01

1.目标  2.项目测试前准备工作   3.业务特征,项目技术栈.   二.项目实战第一步 1.产品需求评审  2.产品需求评审案例(身份认证) 注意:跟文字有关,比如看不清,错字还有和美观有关。都不用管它。  3.个人认证需求评审更新 第一张图:有国徽的是正面的,没有国徽的一面是反面(刚好写反了) 最后一张:支付失败(应该是验证失败) 如果出现了...

php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明

php有一款插件叫做imagemagick,功能很强大,提供了图片的很多操作,图片剪切、压缩、合并、插入文本、背景色透明等。并且有api方法调用和命令行操作两种方式,如果只是简单处理的话建议api方法调用,如果是很复杂的操作建议服务器端搭shell命令行操作,因为api方法调用同操作对比命令行他更吃内存,并且效率没有命令行那么高。 本文章就对于这些常见操作...