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. 如何在Windows 10上运行Docker和Kubernetes?

    如何在Windows 10上运行Docker和Kubernetes? 在Windows上学习Docker和Kubernetes,开始的时候会让你觉得无从下手.最起码安装好这些软件都不是一件容易的事情. ...

  2. ftp sun jdk自带

    package com.italktv.colnv.stat.util; import java.io.File; import java.io.FileInputStream; import jav ...

  3. poj1193 内存分配

    气死我了...这个毒瘤内存分配..... 优先队列 + 链表模拟,看起来搞一搞就好了却WA来WA去... 最后对拍手动找才发现错误: erase的时候不要急急忙忙插入wait!要把同一时期的erase ...

  4. hdu5306 Explosion

    题目链接 题意 有n个房间,每个房间里面有若干把钥匙,每把钥匙可以打开对应的一扇门.如果手中没有钥匙,就要随机轰炸一个房间来打开这个房间.如果有钥匙,就要去打开这些房间.问期望轰炸次数是多少. 思路 ...

  5. Java如何判断文件或者文件夹是否在?不存在如何创建?

    Java如何判断文件或者文件夹是否在?不存在如何创建?   1. 首先明确一点的是:test.txt文件可以和test文件夹同时存在同一目录下:test文件不能和test文件夹同时存在同一目录下. 原 ...

  6. java方法笔记: split,instanceof,StringBuilder(),append(),string ,Integer,Math,正则表达式

    http://swiftlet.net/archives/709 如果分隔符在前方,会显示“”,在尾部不显示: *|做分割,需要加\\ API文档如下 1.instanceof 查看前者是否是后者的实 ...

  7. Luogu P4097 [HEOI2013]Segment 李超线段树

    题目链接 \(Click\) \(Here\) 李超线段树的模板.但是因为我实在太\(Naive\)了,想象不到实现方法. 看代码就能懂的东西,放在这里用于复习. #include <bits/ ...

  8. python对象初始化

    当python对象被创建以后,需要将对象进行初始化.Python有一个构造函数和一个初始化函数: 1.构造函数__new__,只接受一个参数,即类本身(它会在对象被构造之前调用,所以这里也就没有sel ...

  9. Linux_问题

    1.远程连接项目服务器(miit_shi),遇到的问题 问题:Connecting to IP地址:22... Connection established. To escape to local s ...

  10. Hadoop生态圈-单点登录框架之CAS(Central Authentication Service)部署

    Hadoop生态圈-单点登录框架之CAS(Central Authentication Service)部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.CAS简介 CAS( ...