simple_tag定义以及使用

模板中自定义方法
1. 在app下创建一个名为templatetags的python包
2. 在python中创建python文件 my_tag.py
3. 在python文件中写固定的代码
from django import template
register = template.Library() # register 不能变 4. 定义函数 + 加装饰器 1. simple_tag
@register.simple_tag
def reverse_url(name, *args, **kwargs): 使用:
1. 导入 {% load 文件名 %}
2. 使用 {% 函数名 参数1 参数2 k1=v1 %} from django.http.request import QueryDict qd = QueryDict(mutable=True) # 可编辑的字典
qd['next'] = next
qd.urlencode() # urlencode url编码
qd._mutable =True # 改为可编辑的
qd.copy() # 深拷贝 可编辑的字典

编辑后返回当前页案例:

标签文件代码

from django import template
from django.urls import reverse
from django.http.request import QueryDict
register = template.Library() #register这个名字不能变 @register.simple_tag()
def reverse_url(request,name,*args,**kwargs):
next = request.get_full_path()
qd = QueryDict(mutable=True)
qd['next'] = next url = reverse(name,args=args,kwargs=kwargs)
return_url = "{}?{}".format(url,qd.urlencode())
return return_url 后端视图代码
def user_list(request):
users = models.User.objects.all()
page_obj = pagination.Pagination(request.GET.get('page'),len(users)) return render(request,'user_list.html',
{'users':users[page_obj.start:page_obj.end],'page_html':page_obj.page_html}) def user_change(request,pk=None):
print(request.META)
obj = models.User.objects.filter(pk=pk).first()
form_obj = UserForm(instance=obj)
if request.method == 'POST':
form_obj = UserForm(data=request.POST, instance=obj)
if form_obj.is_valid():
form_obj.save()
next = request.GET.get('next')
if next:
url = next
else:
url = 'user_list'
return redirect(url) title = "编辑用户" if pk else "新增用户"
return render(request, 'form.html', {'form_obj': form_obj, 'title': title}) #模板文件
{% extends 'layout.html' %}
{% block content %}
{% load my_tags %}
<table class="table">
<thead>
<tr>
<th>
用户名
</th>
<th>
密码
</th>
<th>
编辑
</th>
</tr> </thead>
<tbody>
{% for user in users %}
<tr>
<td>{{ user.name }}</td>
<td>{{ user.password }}</td>
<td>
<a href="{% reverse_url request 'user_edit' user.pk %}">编辑</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{{ page_html }}
{% endblock %}

django 中自定义方法simple_tag的更多相关文章

  1. Django中的Form

    Form 一.使用Form Django中的Form使用时一般有两种功能: 1.生成html标签 2.验证输入内容 要想使用django提供的form,要在views里导入form模块 from dj ...

  2. Django中使用Bootstrap

    一.在Django中引用Bootstrap模版 1.首先下载bootsrtap代码(http://v3.bootcss.com/getting-started/#download),并将下载后的文件放 ...

  3. 转 Django中的Form

    https://www.cnblogs.com/chenchao1990/p/5284237.html Form 一.使用Form Django中的Form使用时一般有两种功能: 1.生成html标签 ...

  4. 异步任务队列Celery在Django中的使用

    前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队 ...

  5. Mysql事务探索及其在Django中的实践(二)

    继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...

  6. Mysql事务探索及其在Django中的实践(一)

    前言 很早就有想开始写博客的想法,一方面是对自己近期所学知识的一些总结.沉淀,方便以后对过去的知识进行梳理.追溯,一方面也希望能通过博客来认识更多相同技术圈的朋友.所幸近期通过了博客园的申请,那么今天 ...

  7. Django 中url补充以及模板继承

    Django中的URL补充 默认值 在url写路由关系的时候可以传递默认参数,如下: url(r'^index/', views.index,{"name":"root& ...

  8. django中css问题

    django中加载的css,js,图片其中js和图片可以加载出来,而css没有效果.原因如下: 这是因为你安装的某些IDE 或者其他更改了注册表导致的系统的注册表\HKEY_CLASSES_ROOT\ ...

  9. 在Django中进行注册用户的邮件确认

    之前利用Flask写博客时(http://hbnnlove.sinaapp.com),我对注册模块的逻辑设计很简单,就是用户填写注册表单,然后提交,数据库会更新User表中的数据,字段主要有用户名,哈 ...

随机推荐

  1. Windows Qt 项目中文乱码

    在头文件中加入 #if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") #endif

  2. mfc递归删除文件夹

    BOOL myDeleteDirectory(CString directory_path) //删除一个文件夹下的所有内容 { BOOL ret=TRUE; CFileFind finder; CS ...

  3. PostgreSql 使用自定义序列(Sequence)向表插入数据

    最近公司使用到了PostgreSql,哈哈,这个SQL之前基本上没有用过,既然公司使用到了,那就学习一下吧,记一篇小笔记: 什么是PostgreSql:https://www.postgresql.o ...

  4. delphi 根据数据库结构生成TreeView

    procedure TUIOperate.FillTree(treeview: TTreeView); var   findq: TADOQuery;   node: TTreeNode;     / ...

  5. VAO和VBO

    我想大家都已经熟悉VBO了吧.在GL3.0时代的VBO大体还是处于最重要的地位,但是与此同时也出现了不少新的用法和辅助役,其中一个就是VAO.本文大致小记一下这两者的联系,帮助大家理解一下这个角色.— ...

  6. 【AMAD]django-filter -- 一个通用的,基于用户选择的Django Queryset 过滤系统

    简介 用法 和DRF集成 个人评分 简介 django-filter1可以通过URL的query string参数,动态对Queryset进行过滤. 用法 import django_filters ...

  7. OpenCV.概念(读书笔记)

    ZC:学习OpenCV.pdf 1.多通道矩阵(学习OpenCV.pdf) 1.1.在学习opencv的时候看到多通道矩阵这一概率,恳求大神告诉我一下什么意思_百度知道.html(https://zh ...

  8. 洛谷 题解 CF903B 【The Modcrab】

    如果它在接下来一回合能一下就将你KO了,那么,你就十分需要回血(一直回到它一下敲不死你),否则你就一直打它就好了. #include<iostream> using namespace s ...

  9. zotero入门简介

    文献管理工具必备的功能:word文档中插入文献引用,自动生成参考文献列表. 支持系统:windows, linux, macOS. 费用:免费提供300M以内文献库存储容量. 其他:支持笔记,条目附件 ...

  10. mysql在字符编辑窗口下怎么退出编辑界面?(mysql下的ctrl+c与\c)

    [1]SQL编辑 我们在SQL编辑的时候打错了,想要退出编辑重新输入,或者是不想写了. 如下图 (1)如果我们直接按ctrl+c中断,那么直接退出整个linux了,如上图 (2)我们可以使用\c,直接 ...