Django之CRM项目Day5-跳转页面 跟进记录 报名记录
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:添加跳转链接
- 为每一名客户添加跟进记录编辑:
- 报名记录
Django之CRM项目Day5-跳转页面 跟进记录 报名记录的更多相关文章
- 源码安装python +NGINX 的坎坷路 +uwsgi安装 部署django 的CRM项目
一.Nginx安装(基于ubuntu17.10 版本) 首先我们是基于源码安装,主要有如下步骤 1.安装依赖包 1.安装gcc g++的依赖库 sudo apt-get install build-e ...
- Django之CRM项目Day3-客户展示及分页
1.展示客户 模板的查找顺序: 先找全局的templates--> 按照app的注册顺序找templates中的文件 使用admin添加数据: 创建超级用户 python manage.py ...
- Django之CRM项目Day6-公私户转换问题解决 班主任功能
1.解决公户转私户的问题 数据库中加锁: begin; 开始事务 select * from user where id=1 for update; 加锁 commit; 结束事务 dja ...
- Django之CRM项目Day4-编辑客户 公私户 模糊查询
1.增加客户 2.编辑客户 obj = models.Customer.objects.filter(pk=edit_id).first() form_obj = CustomerForm(insta ...
- CRM项目讲解和django知识点回顾
今天想把之前写的CRM项目梳理下,顺便回顾一下djiango的部分重要知识. 1.登录页面(包含简单验证码) 首先来看下CRM的登录页面,样式啥的不重要,大家可以去jquery ui的网站上或者其他地 ...
- Django项目:CRM(客户关系管理系统)--81--71PerfectCRM实现CRM项目首页
{#portal.html#} {## ————————46PerfectCRM实现登陆后页面才能访问————————#} {#{% extends 'king_admin/table_index.h ...
- Django 中 a href标签 使用方法 跳转页面(Django四)
上次我已经用Django启动了一个登录模板页面 具体过程见:Django启动我的第一个模板页面 但问题是我们只能通过监听的端口访问这一个页面,不能通过页面的一些连接跳转到其他页面如下,我们不能点击注册 ...
- 运行django新的项目,页面总是显示以前的项目,问题解决
运行django新的项目,页面总是显示以前的项目 只需打开任务管理器,再进程中关闭python.exe 再次重新启动服务,python manage.py runserver.即可
- Django - CRM项目(2)Q查询(模糊查询)
一.CRM项目(2) 利用Q查询中的q对象完成条件筛选功能. 批量删除.公户转私户功能. 新增一张跟进记录表ConsultRecord,迁移数据库并添加测试数据,实现跟进记录列表页面. 客户列表新增跟 ...
随机推荐
- pytest 8 参数化parametrize
pytest.mark.parametrize装饰器可以实现用例参数化 1.以下是一个实现检查一定的输入和期望输出测试功能的典型例子 import pytest @pytest.mark.parame ...
- java 网络编程 TCP协议 java 服务器和客户端 java socket编程
一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程: 先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客 ...
- 安装webpack-dev-server始终不成功
先安装了webpack,后来安装webpack-dev-server会一直出现这个问题,我把webpack提示的1.0.0 , 2.0.0 ,3.0.0全都在全局装了一遍都没用,还是会出现这个问题.最 ...
- springcloud使用zookeeper作为config的配置中心
https://blog.csdn.net/CSDN_Stephen/article/details/78856323 仓库更新了,本地如何更新: 使用configserver作为配置中心: http ...
- socket关闭状态问题
下面是对 譬如 “CLOSE_WAIT” 现象的一些解释: 主动关闭方和被动方经历的状态:FIN_WAIT_1(主动关闭一方): 当SOCKET在ESTABLISHED状态时,它想主动关 闭 ...
- [USACO07NOV] Milking Time
题目链接 动态规划转化成 DAG 然后拓扑求解的思路 虽然很简单不过感觉这个新思路会很有用! 如果两个事件互不影响并且有先后关系,就可以连一条有向边,跑最长路可以得到最后的最优解 实际上这还是个背包… ...
- plsql无法正常显示汉字
首先执行语句 select * from V$NLS_PARAMETERS 查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否为SIMPLIFIED CHINES ...
- Linux系统(centos)同步时间方式
.删除本地时间并设置时区为上海 rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 1 yum i ...
- go tcp
TCP编程 1.客户端和服务器 2.服务端的处理流程 监听端口 接收客户端的链接 创建goroutine,处理该链接 3.客户端的处理流程 建立与服务端的链接 进行数据收发 关闭链接 服务端代码 pa ...
- Java的一些基本术语
1. 反射 获取类本身,就叫“反射”,有以下3种方式: // 通过“实例”获取类 String str = "hello"; Class cls1 = str.getClass() ...