關於python開發CRM系統


注意本項目是針對培訓學校開發簡化的CRM

CRM簡介

CRM全稱:customer relationship management

無CRM的痛點

沒有CMR的缺點及痛點:

  1. 每個銷售會通過Excel來統計客戶信息,造成信息不能同步和共享
  2. 客戶信息沒有記錄和跟進信息
  3. 會造成搶單問題
  4. 無法統計成單率和報表
  5. 沒有和客戶的溝通記錄
  6. 客戶信息表,唯一的客戶端ID
  7. 一對多的跟進記錄
  8. 客戶狀態,報名和未報名
  9. 客戶來源分析
  10. 學員報名信息
  11. 學員可以報多個課程,每個課程的每節課程都有成績,以及成績排名
  12. 班級信息

將痛點轉換成需求

班級—>課程節次—>學員上課記錄

  1. 課程信息
  2. 繳費記錄
  3. 用戶使用場景分析
  4. 角色管理
  5. 權限管理
  6. 動態菜單
  7. 在線交作業

關於表結構

后續完整后補充

 

關於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文件

 

 

待續。。。。。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM