1 编辑和添加后跳转页面:

思路:写一个参数将路径的条件带上
注意:捋流程的时候从urls里开始

1.在crm文件夹下新建python包:templatetags,在包里新建url.py:

from django import template
from django.urls import reverse register = template.Library() @register.simple_tag()
def reverse_url(request, name, *args, **kwargs):
"""
反向解析生成URL,拼接参数
:param request:
:param name: URL的别名
:param args: pk等信息,可以按照位置参数传,也可以按照关键字参数传
:param kwargs:
:return:
"""
# 先反向解析生成URL,根据传的URL别名和参数反向解析生成基本的URL
base_url = reverse(name, args=args, kwargs=kwargs)
# 从当前的URL上获取参数 --> query=1&page=2
params = request.GET.urlencode # url变成了字符串
if not params:
return base_url
# 返回带条件的URL
return "{}?{}".format(base_url, params) # 有params的情况下再拼接URL

2.修改customer_list.html:

{% load url %}  引入url

修改操作

<td>
<a href="{% reverse_url request 'customer_edit' customer.pk %}"><i class="fa fa-pencil-square-o"></i></a>
</td>

3.在crm下的util文件里新建url.py:

from django.urls import reverse
# 跳转页面,因为其他方法有可能也会用到,所以写成公共部分
def reverse_url(request, name, *args, **kwargs):
base_url = reverse(name, args=args, kwargs=kwargs)
params = request.GET.urlencode # url变成了字符串
if not params:
return base_url
return "{}?{}".format(base_url, params) # 有params的情况下再拼接URL

4.修改views.py:

from crm.utils.url import reverse_url
# 新增和编辑
def customer_change(request, edit_id=None):
obj = models.Customer.objects.filter(pk=edit_id).first()
form_obj = CustomerForm(instance=obj)
if request.method == 'POST':
form_obj = CustomerForm(request.POST, instance=obj)
if form_obj.is_valid():
form_obj.save() # 没有instance新增 有instance做修改
# return redirect(reverse('customer_list'))
return redirect(reverse_url(request, 'customer_list'))
return render(request, 'customer_change.html', {'form_obj': form_obj, 'edit_id': edit_id})

2 跟进记录的展示、新增和编辑

展示跟进记录:

urls.py:

-> views.py:

   class ConsultList(View):
def get(self, request):
return (request, 'consult_list.html')

->模板-consult_list.html:

->views.py:

   # 获取跟进记录
all_consult = models.

->模板-consult_list.html:

->模板-layout.html:右侧添加跟进记录一栏

添加跟进记录:

urls.py:

-> views.py:

   def consult_add(request):
pass

->forms.py:

   class ConsultForm(BootstrapForm):
class Meta:
model = models.ConsultRecord
fields = "__all__"

-> views.py:

   def consult_add(request):
# 实例化一个空Form
form_obj = ConsultForm()
return render(request,'consult_add.html', {'form_obj':form_obj})

->模板-consult_add.html:

->forms.py:

   class ConsultForm(BootstrapForm):
class Meta:
model = models.ConsultRecord
fields = "__all__" def __init__(*args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['delete_status'].widget.attrs.pop('class')

->views.py

   def consult_add(request):
form_obj = ConsultForm()
# 处理
if request.method == 'POST':
form_obj = ConsultForm(request.POST) return render(request,'consult_add.html', {'form_obj':form_obj})

->模板-consult_add.html:


编辑跟进记录

->urls.py:

   url(r'^')

->views.py

   def consult_add(request):
obj = models.ConsultRecord.objects.filter(pk=edit_id).first()
form_obj = ConsultForm()
# 处理
if request.method == 'POST':
form_obj = ConsultForm(request.POST) return render(request,'consult_edit.html', {'form_obj':form_obj})

->模板-consult_edit.html:

->模板-consult_list.html:添加跳转链接

- 为每一名客户添加跟进记录编辑:

  1. 报名记录

Django之CRM项目Day5-跳转页面 跟进记录 报名记录的更多相关文章

  1. 源码安装python +NGINX 的坎坷路 +uwsgi安装 部署django 的CRM项目

    一.Nginx安装(基于ubuntu17.10 版本) 首先我们是基于源码安装,主要有如下步骤 1.安装依赖包 1.安装gcc g++的依赖库 sudo apt-get install build-e ...

  2. Django之CRM项目Day3-客户展示及分页

    1.展示客户 模板的查找顺序: ​ 先找全局的templates--> 按照app的注册顺序找templates中的文件 使用admin添加数据: 创建超级用户 python manage.py ...

  3. Django之CRM项目Day6-公私户转换问题解决 班主任功能

    1.解决公户转私户的问题 数据库中加锁: ​ begin; 开始事务 ​ select * from user where id=1 for update; 加锁 ​ commit; 结束事务 dja ...

  4. Django之CRM项目Day4-编辑客户 公私户 模糊查询

    1.增加客户 2.编辑客户 obj = models.Customer.objects.filter(pk=edit_id).first() form_obj = CustomerForm(insta ...

  5. CRM项目讲解和django知识点回顾

    今天想把之前写的CRM项目梳理下,顺便回顾一下djiango的部分重要知识. 1.登录页面(包含简单验证码) 首先来看下CRM的登录页面,样式啥的不重要,大家可以去jquery ui的网站上或者其他地 ...

  6. Django项目:CRM(客户关系管理系统)--81--71PerfectCRM实现CRM项目首页

    {#portal.html#} {## ————————46PerfectCRM实现登陆后页面才能访问————————#} {#{% extends 'king_admin/table_index.h ...

  7. Django 中 a href标签 使用方法 跳转页面(Django四)

    上次我已经用Django启动了一个登录模板页面 具体过程见:Django启动我的第一个模板页面 但问题是我们只能通过监听的端口访问这一个页面,不能通过页面的一些连接跳转到其他页面如下,我们不能点击注册 ...

  8. 运行django新的项目,页面总是显示以前的项目,问题解决

    运行django新的项目,页面总是显示以前的项目 只需打开任务管理器,再进程中关闭python.exe 再次重新启动服务,python manage.py runserver.即可

  9. Django - CRM项目(2)Q查询(模糊查询)

    一.CRM项目(2) 利用Q查询中的q对象完成条件筛选功能. 批量删除.公户转私户功能. 新增一张跟进记录表ConsultRecord,迁移数据库并添加测试数据,实现跟进记录列表页面. 客户列表新增跟 ...

随机推荐

  1. pytest 8 参数化parametrize

    pytest.mark.parametrize装饰器可以实现用例参数化 1.以下是一个实现检查一定的输入和期望输出测试功能的典型例子 import pytest @pytest.mark.parame ...

  2. java 网络编程 TCP协议 java 服务器和客户端 java socket编程

    一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程:        先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客 ...

  3. 安装webpack-dev-server始终不成功

    先安装了webpack,后来安装webpack-dev-server会一直出现这个问题,我把webpack提示的1.0.0 , 2.0.0 ,3.0.0全都在全局装了一遍都没用,还是会出现这个问题.最 ...

  4. springcloud使用zookeeper作为config的配置中心

    https://blog.csdn.net/CSDN_Stephen/article/details/78856323 仓库更新了,本地如何更新: 使用configserver作为配置中心: http ...

  5. socket关闭状态问题

    下面是对 譬如  “CLOSE_WAIT” 现象的一些解释: 主动关闭方和被动方经历的状态:FIN_WAIT_1(主动关闭一方): 当SOCKET在ESTABLISHED状态时,它想主动关     闭 ...

  6. [USACO07NOV] Milking Time

    题目链接 动态规划转化成 DAG 然后拓扑求解的思路 虽然很简单不过感觉这个新思路会很有用! 如果两个事件互不影响并且有先后关系,就可以连一条有向边,跑最长路可以得到最后的最优解 实际上这还是个背包… ...

  7. plsql无法正常显示汉字

    首先执行语句 select * from V$NLS_PARAMETERS  查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否为SIMPLIFIED CHINES ...

  8. Linux系统(centos)同步时间方式

    .删除本地时间并设置时区为上海 rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 1 yum i ...

  9. go tcp

    TCP编程 1.客户端和服务器 2.服务端的处理流程 监听端口 接收客户端的链接 创建goroutine,处理该链接 3.客户端的处理流程 建立与服务端的链接 进行数据收发 关闭链接 服务端代码 pa ...

  10. Java的一些基本术语

    1. 反射 获取类本身,就叫“反射”,有以下3种方式: // 通过“实例”获取类 String str = "hello"; Class cls1 = str.getClass() ...