注意本項目是針對培訓學校開發簡化的CRM
CRM簡介
CRM全稱:customer relationship management
無CRM的痛點
沒有CMR的缺點及痛點:
- 每個銷售會通過Excel來統計客戶信息,造成信息不能同步和共享
- 客戶信息沒有記錄和跟進信息
- 會造成搶單問題
- 無法統計成單率和報表
- 沒有和客戶的溝通記錄
- 客戶信息表,唯一的客戶端ID
- 一對多的跟進記錄
- 客戶狀態,報名和未報名
- 客戶來源分析
- 學員報名信息
- 學員可以報多個課程,每個課程的每節課程都有成績,以及成績排名
- 班級信息
將痛點轉換成需求
班級—>課程節次—>學員上課記錄
- 課程信息
- 繳費記錄
- 用戶使用場景分析
- 角色管理
- 權限管理
- 動態菜單
- 在線交作業
關於表結構
后續完整后補充
關於django的admin
知識點回顧:
使用django中的admin的方法:
1、models.py中創建好表的類
2、執行python3 manager.py makemigrations
3、執行python3 manager.py migrate
4、上述操作完成后默認是在項目文件下生成db.sqlite3數據庫文件
5、 在admin.py文件中先導入modes,然后將表進行注冊,該項目的代碼例子如下:
from django.contrib import admin # Register your models here. from crm import models admin.site.register(models.Customer) admin.site.register(models.StudyRecord) admin.site.register(models.Role) admin.site.register(models.Menu) admin.site.register(models.Enrollment) admin.site.register(models.ClassList) admin.site.register(models.Branch) admin.site.register(models.CourseRecord) admin.site.register(models.Course) admin.site.register(models.FollowUpRecord) admin.site.register(models.UserProfile)
6、 最后執行python3 manage.py createsuperuser,創建admin用戶
如何調用django中admin的認證功能
如果想要調用django中的admin認證需要:
在models.py文件中創建表的類的時候,先導入一個模塊
from django.contrib.auth.models import User
然后在用戶信息的類中,通過和admin中user表建立一對一的關系,從而實現認證功能
class UserProfile(models.Model): ''' 用戶信息 ''' user = models.OneToOneField(User) name = models.CharField(max_length=32)
這樣就可以調用django中admin的認證
在views.py函數中使用admin的認證
調用django中admin的認證功能需要導入如下模塊,authenticate用於認證,login用於登錄,logout用於退出
from django.contrib.auth import authenticate,login,logout
具體代碼如下:
def acc_login(request): if request.method == "POST": username = request.POST.get("username") password = request.POST.get("password") user = authenticate(username=username,password=password) #因為這里調用的django中admin的認證功能,所以這個時候如果認證成功得到的是<class 'django.contrib.auth.models.User'>對象 #如果想要獲取具體的用戶名,可以user.userprofile.name得到 #print("res:",type(user),user.userprofile.name) if user: #auth認證成功 login(request,user) return redirect("/crm") return render(request,"login.html")
這里需要知道的是authenticate返回的其實是一個用戶對象
<class 'django.contrib.auth.models.User'>,
如果想要獲取具體的用戶名字則需要通過user.userprofile.name,
關於動態菜單
根據屬於不同的用戶角色的用戶登錄是顯示不同的菜單
(這里有一個問題需要注意,當一個菜單選項屬於多個角色的時候,而這個用戶又屬於多個角色,這個時候就會造成該用戶登錄的時候菜單選項重復問題)
動態菜單這里還有一個事情需要小技巧,就是選中某菜單的時候給一個背景色,即動態添加active
這里可以根據url來設置,因為每個菜單的都是一個a標簽而a標簽的href屬性和當前的頁面的url是相同的
通過通過在js中獲取當前的url也就是’{{request.path}}’
關於django中admin的自定制功能
在django的admin中可以自定義顯示的字段內容,需要在admin.py配置文件中做如下配置:
class CustomerAdmin(admin.ModelAdmin): list_display = ("id","name","qq","consultant","consult_content","status","date")
在admin.py中創建類,並且讓繼承admin.ModelAdmin
list_display表示要顯示的字段,將要顯示的字段在后面列出,這樣在前端頁面就可以看到
當然也可以通過list_filter實現過濾的搜索的功能
通過search_fields實現關鍵字搜索
通過list_editable實現對某些字段編輯功能如:
自己寫一個admin,這里命名為kingadmin
分析過程:
首先從外觀分析
django登錄admin的時候顯示如上圖,會顯示所有的app名字,並且在每個app下會顯示該app所有的表名
這里有幾個知識點需要注意:
關於如何獲取所有的app
所有注冊的app都會在sttings的配置文件中的INSTALLED_APPS中,
而這里獲得方法如下:
from django import conf for app in conf.settings.INSTALLED_APPS: try: print(__import__("%s.kingadmin" %app)) except ImportError as e: print("app has no model kingadmin")
這里通過導入django的conf模塊,然后conf.settings.INSTALLED_APPS獲取所有的app信息,
關於注冊表
分析django的admin的源碼可以看出關於注冊這里,是創建了一個AdminSite類,並且實例化
在初始化函數的時候頂一個registery字典
每次注冊都會添加到這個字典中,所以我們可以模仿這個樣子寫
在這里用到幾個知識點:
自定義標簽simple_tag
創建過程:
創建templatetags包
在templatetags創建py文件
導入template模塊:from django import template
register = template.Library()
@register.simple_tag
如果返回的內容中有html則需要
from django.utils.safestring import mark_safe
在要返回的字符串:mark_safe(內容)
最要在前段頁面導入:{%load kingadmin_tags%}這里kingadmin_tags 是在templatetags包創建的py文件
待續。。。。。。。。