76 添加用户后跳转原来的页面, 跟进记录表

主要内容:

1  添加用户后跳转到原来的页面:

  a : 出现的问题:, 在点击搜索条件后, 此时在添加满足条件的用户,不会出现在该页面, 跳转到 customer_lsit页面上

  b : 解决方案 : 把查询条件和路径拼接到url的后面, 此时html页面中a标签的url后面不能直接跟next = {{url}}, 而应该使用querydict的一个方法urlencode()

  c : 有以下两种方法:

    1 .在customer_list页面端的a标签, 拼接路径

      在后端的views方法写:

  url = request.get_full_path()
        print(url)
        qd = QueryDict()
        qd._mutable = True
        qd['next'] = url
        print(' 这是qd: ',qd)
        qdurl = qd.urlencode()

      在html页面中:(在后端返回页面的时候把该qdurl传过来)

        <a href="{% url 'add_customer'%}?{{ qdurl }}" class="btn btn-primary btn-sm">添加</a>

    2  定义一种方法

      在视图函数中的写法:

 
在生成用户列表的cbv中写这样的一个方法, 在该用到的地方调用该方法.
# 定义一个生成标签的方法
    def a_tag(self):
        url = self.request.get_full_path()
        print('这是full-path的内容',url)
        print('这是path-info的内容',self.request.path_info)
        qd = QueryDict()
        qd._mutable = True
        qd['next'] = url
        qdurl = qd.urlencode()
        print('这是编码后的eurl',qdurl)
        add_btn = '<a href="{}?{}" class="btn btn-primary btn-sm">添加</a>'.format(reverse('add_customer'), qdurl)
        return add_btn, qdurl

      在html中的写法:(后端传过来的是一个变量, 所以html页面渲染的时候直接用{}{就可以.})

 {{ add_btn1 }}

      注意1 : request.path-info和request.get_full_path的区别和联系

     这是full-path的内容 /customer_list/?query=%E6%9D%8E&page=2;  full-path获取全部的url的内容
     这是path-info的内容 /customer_list/                          path-info获取的是?之前的内容

      注意2: querydict的用法的注意点:

1, 要想修改必须把属性_mutale = ture
2, querydict的一个方法:urlencode()
3, 优点
{# 如果直接把url加在next的后面, 此时会出现取不到page的问题, 因为&符相当于多个条件, 只能取到&之前的内容.#}
{#            <a href="{% url 'add_customer'%}?next={{ url }}" class="btn btn-primary btn-sm">添加</a>#}
{# 现在把url写在querydict里面, 通过urlencode写成url的形式next=%2Fcustomer_list%2F%3Fquery%3D%25E6%259D%258E#}

2 跟进记录表:

原文地址:https://www.cnblogs.com/gyh412724/p/9849231.html