Django项目:CRM(客户关系管理系统)--54--46PerfectCRM实现登陆后页面才能访问

 1 #urls.py
 2 
 3 """PerfectCRM URL Configuration
 4 
 5 The `urlpatterns` list routes URLs to views. For more information please see:
 6     https://docs.djangoproject.com/en/2.0/topics/http/urls/
 7 Examples:
 8 Function views
 9     1. Add an import:  from my_app import views
10     2. Add a URL to urlpatterns:  path('', views.home, name='home')
11 Class-based views
12     1. Add an import:  from other_app.views import Home
13     2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
14 Including another URLconf
15     1. Import the include() function: from django.urls import include, path
16     2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
17 """
18 from django.contrib import admin
19 from django.urls import path
20 
21 # ————————02PerfectCRM创建ADMIN页面————————
22 from django.conf.urls import url  # URL
23 from django.conf.urls import include # 分发URL
24 # ————————02PerfectCRM创建ADMIN页面————————
25 
26 # ————————46PerfectCRM实现登陆后页面才能访问————————
27 from PerfectCRM import main_views
28 # ————————46PerfectCRM实现登陆后页面才能访问————————
29 
30 urlpatterns = [
31     path('admin/', admin.site.urls),
32     
33 # ————————02PerfectCRM创建ADMIN页面————————
34     url(r'^king_admin/', include("king_admin.king_urls")),  # 自定义admin
35 # ————————02PerfectCRM创建ADMIN页面————————
36     
37 # ————————03PerfectCRM创建基本数据————————
38     url(r'^DBadd/', include("DBadd.DBadd_urls")),  # 添加随机数据
39 # ————————03PerfectCRM创建基本数据————————
40     # ————————38PerfectCRM实现全局账号登录注销————————
41     url(r'^gbacc/', include("gbacc.gbacc_urls")),  # 全局账号登录注销
42     # ————————38PerfectCRM实现全局账号登录注销————————
43 
44     # ————————42PerfectCRM实现AJAX全局账号注册————————
45     url(r'^gbacc/', include("gbacc.gbacc_ajax_urls")),  # 全局账号登录注销
46     # ————————42PerfectCRM实现AJAX全局账号注册————————
47 
48     # ————————46PerfectCRM实现登陆后页面才能访问————————
49     url(r'^$', main_views.PortalView.as_view()),
50     # ————————46PerfectCRM实现登陆后页面才能访问————————
51 ]
#urls.py

 1 # main_views.py
 2 # ————————46PerfectCRM实现登陆后页面才能访问————————
 3 #门户主页
 4 from django.views.generic import TemplateView
 5 
 6 class PortalView(TemplateView):
 7 
 8     template_name = "portal.html"
 9 
10 # ————————46PerfectCRM实现登陆后页面才能访问————————
# main_views.py

 1 {#portal.html#}
 2 {## ————————46PerfectCRM实现登陆后页面才能访问————————#}
 3 {% extends 'king_admin/table_index.html' %}
 4 {% block right-container-content %}
 5 <div class="container col-lg-offset-3">
 6     <h2><a class="form-signin-heading" href="/king_admin/">King_admin主页</a> </h2>
 7     <h2><a class="form-signin-heading" href="/king_admin/crm/">单个具体app页面</a> </h2>
 8     <h2><a class="form-signin-heading" href="/king_admin/crm/userprofile/">详细内容</a> </h2>
 9     <h2><a class="form-signin-heading" href="/king_admin/crm/userprofile/1/change/">修改信息</a> </h2>
10     <h2><a class="form-signin-heading" href="/king_admin/crm/userprofile/1/password/">修改密码</a> </h2>
11     <h2><a class="form-signin-heading" href="/king_admin/crm/userprofile/add/">添加信息</a> </h2>
12     <h2><a class="form-signin-heading" href="/king_admin/crm/userprofile/1/delete/">删除信息</a> </h2>
13 </div>
14 
15 {% endblock %}
16 
17 {## ————————46PerfectCRM实现登陆后页面才能访问————————#}
{#portal.html#}

  1 #views
  2 
  3 # ————————02PerfectCRM创建ADMIN页面————————
  4 from django.shortcuts import render
  5 
  6 # ————————04PerfectCRM实现King_admin注册功能————————
  7 # from django import conf #配置文件
  8 # print("dj conf:",conf) #配置文件
  9 # print("dj conf:",conf.settings)#配置文件.设置
 10 # ————————04PerfectCRM实现King_admin注册功能————————
 11 
 12 # ————————04PerfectCRM实现King_admin注册功能————————
 13 from king_admin import app_config #自动调用  动态加载类和函数
 14 # ————————04PerfectCRM实现King_admin注册功能————————
 15 
 16 # ————————04PerfectCRM实现King_admin注册功能————————
 17 # from king_admin.base_admin import registered_sites # registered_sites={}
 18 from king_admin import base_admin
 19 # ————————04PerfectCRM实现King_admin注册功能————————
 20 
 21 # ————————11PerfectCRM实现King_admin基本分页————————
 22 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger  # 分页功能
 23 # ————————11PerfectCRM实现King_admin基本分页————————
 24 
 25 # ————————46PerfectCRM实现登陆后页面才能访问————————
 26 from  django.contrib.auth.decorators import login_required
 27 # ————————46PerfectCRM实现登陆后页面才能访问————————
 28 
 29 def app_index(request):
 30     # ————————04PerfectCRM实现King_admin注册功能————————
 31     # for app in conf.settings.INSTALLED_APPS:
 32     #     print(app)#循环打印 配置文件.设置.安装应用程序#.Perfectcustomer\settings里的INSTALLED_APPS列表
 33     # ————————04PerfectCRM实现King_admin注册功能————————
 34     
 35     # ————————04PerfectCRM实现King_admin注册功能————————
 36     # return render(request, 'king_admin/app_index.html')
 37     # print("registered_sites",registered_sites)
 38     # return render(request, 'king_admin/app_index.html')
 39     # ————————04PerfectCRM实现King_admin注册功能————————
 40 
 41     # ————————04PerfectCRM实现King_admin注册功能————————
 42     # print("registered_sites", base_admin.registered_sites)
 43     # return render(request, 'king_admin/app_index.html')
 44     # ————————04PerfectCRM实现King_admin注册功能————————
 45     
 46     # ————————05PerfectCRM实现King_admin注册功能获取内存————————
 47     print("registered_sites",base_admin.site.registered_sites)
 48     return render(request, 'king_admin/app_index.html', {"site": base_admin.site})
 49 # ————————05PerfectCRM实现King_admin注册功能获取内存————————
 50 
 51 # ————————02PerfectCRM创建ADMIN页面————————
 52 
 53 # ————————13PerfectCRM实现King_admin分页页数————————
 54 #处理def table_data_list(request,app_name,model_name):里的内容,
 55 def filter_querysets(request,queryset):
 56     condtions = {} #定义一个字典用来存过滤的条件
 57     for k,v in request.GET.items():#不需要空的,判断是否为空
 58         # ————————18PerfectCRM实现King_admin搜索关键字————————
 59         # ————————17PerfectCRM实现King_admin单列排序————————
 60         # if k=="page":continue##kingadmin分页功能
 61 
 62         # if k=="page":continue##kingadmin分页功能 #写法一
 63         # elif k=="_o":continue##kingadmin排序功能  <a href="?_o={{ column }}">{{ column }}</a>
 64 
 65         # if k in ("page","_o") :continue #kingadmin分页功能   #kingadmin排序功能   #写法二
 66 
 67         # if k == "page"or k == "_o": #保留的分页关键字 和  排序关键字 #写法三
 68         #     continue #continue是结束单次循环
 69         # ————————17PerfectCRM实现King_admin单列排序————————
 70         if k in ("page", "_o", "_q"): continue  # kingadmin分页,排序,搜索#判断标签是否存在 自定义的名称
 71         # ————————18PerfectCRM实现King_admin搜索关键字————————
 72 
 73 
 74         # ————————15PerfectCRM实现King_admin多条件过滤————————
 75         if v:
 76             condtions[k] = v  #进行配对字典
 77         # ————————15PerfectCRM实现King_admin多条件过滤————————
 78     query_res = queryset.filter(**condtions)
 79 
 80     return query_res,condtions
 81 # ————————13PerfectCRM实现King_admin分页页数————————
 82 
 83 
 84 
 85 # ————————08PerfectCRM实现King_admin显示注册表的字段表头————————
 86 @login_required # 登陆后页面才能访问
 87 def table_data_list(request,app_name,model_name):
 88     #通过2个参数到base_admin里获取class AdminRegisterException(Exception): 的对象
 89     admin_obj = base_admin.site.registered_sites[app_name][model_name]  #base_admin
 90 
 91     # ————————24PerfectCRM实现King_admin自定义操作数据————————
 92     if request.method == "POST":#批量操作
 93         action = request.POST.get("action_select")#要调用的自定制功能函数
 94         selected_ids = request.POST.get("selected_ids")#前端提交的数据
 95         print(selected_ids,type(selected_ids),"selected_ids-----")
 96         #if type(selected_ids)!='str':
 97         #selected_ids = json.loads(selected_ids)#进行转换数据
 98         print(selected_ids,type(action),action,"selected_ids==========")
 99         #print("action:",selected_ids,action)
100         if selected_ids :
101             #selected_ids = json.loads(selected_ids)#进行转换数据
102             selected_objs = admin_obj.model.objects.filter(id__in=selected_ids.split(','))#返回之前所选中的条件
103         else:
104             raise KeyError('错误,没有选择对象!')
105 
106         if hasattr(admin_obj,action):
107             action_func = getattr(admin_obj,action)#如果admin_obj 对象中有属性action 则打印self.action的值,否则打印'not find'
108             request._admin_action=action#添加action内容
109             print(request._admin_action,action,'<--------')
110         return action_func(request,selected_objs)
111     # ————————24PerfectCRM实现King_admin自定义操作数据————————
112 
113 
114     # ————————09PerfectCRM实现King_admin显示注册表的内容————————
115     admin_obj.querysets =  admin_obj.model.objects.all()#取数据 传到 前端
116     # ————————09PerfectCRM实现King_admin显示注册表的内容————————
117 
118     # ————————11PerfectCRM实现King_admin分页显示条数————————
119     # from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger  # 分页功能#放在顶上导入
120     obj_list =  admin_obj.model.objects.all()#取数据 传到 前端  #base_admin  #获取传过来的所有对象
121 
122     # ————————13PerfectCRM实现King_admin分页页数————————
123     queryset, condtions = filter_querysets(request, obj_list)  #base_admin   # 调用条件过滤
124     # ————————13PerfectCRM实现King_admin分页页数————————
125 
126     # ————————18PerfectCRM实现King_admin搜索关键字————————
127     queryset = get_queryset_search_result(request,queryset,admin_obj)##搜索后
128     # ————————18PerfectCRM实现King_admin搜索关键字————————
129 
130     # ————————26PerfectCRM实现King_admin自定义排序————————
131     sorted_queryset = get_orderby(request, queryset,admin_obj) #排序后的结果
132     # ————————17PerfectCRM实现King_admin单列排序————————
133     # sorted_queryset = get_orderby(request, queryset) #排序后的结果
134     # ————————15PerfectCRM实现King_admin多条件过滤————————
135     # paginator = Paginator(obj_list,admin_obj.list_per_page)  #kingadmin里class CustomerAdmin(BaseAdmin):
136     # paginator = Paginator(queryset, admin_obj.list_per_page)
137     # ————————15PerfectCRM实现King_admin多条件过滤————————
138     paginator = Paginator(sorted_queryset, admin_obj.list_per_page)
139     # ————————17PerfectCRM实现King_admin单列排序————————
140     # ————————26PerfectCRM实现King_admin自定义排序————————
141 
142 
143     page = request.GET.get('page')
144     try:
145         objs = paginator.page(page)  # 当前的页面的数据
146     except PageNotAnInteger:
147         # 如果页面不是一个整数,交付第一页。
148         objs = paginator.page(1)
149     except EmptyPage:
150         # 如果页面的范围(例如9999),交付最后一页的搜索结果。
151         objs = paginator.page(paginator.num_pages)
152     admin_obj.querysets = objs  # base_admin
153 
154     # ————————13PerfectCRM实现King_admin分页页数————————
155     admin_obj.filter_condtions = condtions  # base_admin
156     # ————————13PerfectCRM实现King_admin分页页数————————
157 
158     # ————————11PerfectCRM实现King_admin分页显示条数————————
159 
160     return render(request,"king_admin/table_data_list.html",locals())
161 # ————————08PerfectCRM实现King_admin显示注册表的字段表头————————
162 
163 
164 
165 
166 # ————————17PerfectCRM实现King_admin单列排序————————
167 # def get_orderby(request,queryset):
168     # order_by_key = request.GET.get("_o")   #获取URL里有没有("_o") <a href="?_o={{ column }}">{{ column }}</a>
169     # #页面刚开始没有这个值
170     # if order_by_key != None:  #有("_o")这个值 就进行排序
171     #     query_res = queryset.order_by(order_by_key)
172     # else: #没有就不排序,直接返回
173     #     query_res = queryset
174     # return query_res     #排序时会错
175 
176     # orderby_key = request.GET.get("_o")
177     # if orderby_key:
178     #     return  queryset.order_by(orderby_key)
179     # return  queryset
180 
181 #在table_data_list添加
182 # def table_data_list(request,app_name,model_name): #详细列表
183 # sorted_queryset = get_orderby(request, queryset)
184 #在filter_querysets添加
185 #if k == "page"or k == "_o": #保留的分页关键字 和  排序关键字
186 # ————————17PerfectCRM实现King_admin单列排序————————
187 
188 # ————————26PerfectCRM实现King_admin自定义排序————————
189 def get_orderby(request, queryset, admin_obj):
190     orderby_key = request.GET.get("_o")
191     #order_by_key1=order_by_key.strip()
192     if orderby_key: #有获取到字段
193         query_res = queryset.order_by(orderby_key.strip()) #.strip()默认删除空白符(包括'\n', '\r',  '\t',  ' ')
194     else:
195         if admin_obj.ordering: #查看kingadmin‘有没有    ordering = '-qq'  # 自定义排序
196             query_res = queryset.order_by("%s" %admin_obj.ordering)
197         else:
198             query_res = queryset.order_by('-id') #默认倒序
199     return query_res
200 
201 #在table_data_list添加
202 # def table_data_list(request,app_name,model_name): #详细列表
203 # sorted_queryset = get_orderby(request, queryset, admin_obj)  # 排序后的结果
204 # ————————26PerfectCRM实现King_admin自定义排序————————
205 
206 
207 # ————————18PerfectCRM实现King_admin搜索关键字————————
208 from django.db.models import Q
209 def get_queryset_search_result(request,queryset,admin_obj):
210     search_key = request.GET.get("_q", "")#取定义名,默认为空
211     q_obj = Q()#多条件搜索 #from django.db.models import Q
212     q_obj.connector = "OR"  # or/或 条件
213     for column in admin_obj.search_fields: #搜索目标crm/kingadmin里class CustomerAdmin(BaseAdmin):search_fields = ('name','qq',)
214         q_obj.children.append(("%s__contains" % column, search_key)) #运态添加多个条件
215     res = queryset.filter(q_obj) #对数据库进行条件搜索
216     return res   #返回结果
217 #在table_data_list添加
218 #def table_data_list(request,app_name,model_name): #详细列表
219 #      queryset = get_queryset_search_result(request,queryset,admin_obj)
220 # ————————18PerfectCRM实现King_admin搜索关键字————————
221 
222 
223 # ————————19PerfectCRM实现King_admin数据修改————————
224 from  king_admin import forms
225 #修改内容
226 # def table_change(request,app_name,model_name):
227 #     obj_form = forms.CustomerModelForm()  #创建一个空表单
228 #     return render(request,"kingadmin/table_change.html",locals())
229 @login_required # 登陆后页面才能访问
230 def table_change(request,app_name,model_name,obj_id):
231     admin_obj = base_admin.site.registered_sites[app_name][model_name]   #获取表对象
232                 #kingadmin/forms.py里def CreateModelForm(request,admin_obj):
233     model_form = forms.CreateModelForm(request,admin_obj=admin_obj)  ##modelform 生成表单 加验证
234     # obj_form = model_form()  # 表单
235     obj = admin_obj.model.objects.get(id=obj_id)#根据ID获取数据记录
236 
237     # ————————28PerfectCRM实现King_admin编辑限制————————
238     # ————————20PerfectCRM实现King_admin数据修改美化————————
239     # #面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。
240     # obj_form = model_form(instance=obj)  # 数据传入表单
241 
242     if request.method == "GET":#如果是 GET 表示 是添加记录
243         obj_form = model_form(instance=obj)#数据传入表单
244     elif request.method == "POST":#如果是 POST 表示 是修改后的数据
245         obj_form = model_form(instance=obj,data=request.POST)#更新数据
246         if obj_form.is_valid():
247             obj_form.save()
248     # ————————20PerfectCRM实现King_admin数据修改美化————————
249     # ————————28PerfectCRM实现King_admin编辑限制————————
250 
251     return render(request,"king_admin/table_change.html",locals())
252 # ————————19PerfectCRM实现King_admin数据修改————————
253 
254 
255 # ————————21PerfectCRM实现King_admin查看页面美化————————
256 #单个具体app页面
257 @login_required # 登陆后页面才能访问
258 def table_index(request,app_name):
259     bases=base_admin.site.registered_sites[app_name]#取出对应app对象
260     return render(request, 'king_admin/table_index.html', {"site":bases,'app_name':app_name})
261 # ————————21PerfectCRM实现King_admin查看页面美化————————
262 
263 # ————————22PerfectCRM实现King_admin数据添加————————
264 from django.shortcuts import redirect  # kingadmin添加内容
265 @login_required # 登陆后页面才能访问
266 def table_add(request,app_name,model_name):
267     admin_obj = base_admin.site.registered_sites[app_name][model_name]  #获取表对象
268     # ————————32PerfectCRM实现King_admin添加不进行限制————————
269     admin_obj.is_add_form=True#表示为新增表单
270     # ————————32PerfectCRM实现King_admin添加不进行限制————————
271     model_form = forms.CreateModelForm(request,admin_obj=admin_obj) ##modelform 生成表单 加验证
272     if request.method == "GET":
273         obj_form = model_form() #跳转过来的为空
274     elif request.method == "POST":
275         obj_form = model_form(data=request.POST)  #创建数据
276 
277         # ————————37PerfectCRM实现King_admin添加用户时密码加密————————
278         password=request.POST.get('password') #取前端输入的密码
279         email=request.POST.get('email') #取前端输入的邮箱
280         # ————————37PerfectCRM实现King_admin添加用户时密码加密————————
281 
282         if obj_form.is_valid():
283             # ————————32PerfectCRM实现King_admin添加不进行限制————————
284             # obj_form.save()
285             try:
286                 obj_form.save()#表单验证通过保存
287             except Exception as e:
288                 return redirect("/king_admin/%s/%s/" % (app_name,model_name))#转到之前的页面
289             # ————————32PerfectCRM实现King_admin添加不进行限制————————
290         if not obj_form.errors:   #没有错误返回原来的页面
291 
292             # ————————37PerfectCRM实现King_admin添加用户时密码加密————————
293             obj=admin_obj.model.objects.filter(email=email).first()  # 对象
294             obj.set_password(password)  # 加密
295             try:
296                 obj.save()#表单验证通过保存
297             except Exception as e:
298                 return redirect("/king_admin/%s/%s/" % (app_name, model_name))
299             # ————————37PerfectCRM实现King_admin添加用户时密码加密————————
300 
301             #from django.shortcuts import redirect
302             return  redirect("/king_admin/%s/%s/" % (app_name,model_name))
303     return render(request, "king_admin/table_add.html", locals())
304 # ————————22PerfectCRM实现King_admin数据添加————————
305 
306 
307 # ————————23PerfectCRM实现King_admin数据删除————————
308 @login_required # 登陆后页面才能访问
309 def table_delete(request,app_name,model_name,obj_id):
310     admin_obj = base_admin.site.registered_sites[app_name][model_name]#表类
311     objs=admin_obj.model.objects.get(id=obj_id)#类的对象
312 
313     # ————————33PerfectCRM实现King_admin编辑整张表限制————————
314     # if request.method=='POST':
315     #     objs.delete()#删除
316     #     return redirect("/king_admin/%s/%s/" % (app_name,model_name))#转到列表页面
317 
318     app_name=app_name
319     if admin_obj.readonly_table:
320         errors={'锁定的表单':'该表单:<%s>,已经锁定,不能删除当前记录!'%model_name}
321     else:
322         errors={}
323     if request.method=='POST':
324         if  not admin_obj.readonly_table:
325             objs.delete()#删除
326             return redirect("/king_admin/%s/%s/%s/" % (app_name,model_name,obj_id))#转到列表页面
327     # ————————33PerfectCRM实现King_admin编辑整张表限制————————
328     
329 
330     return render(request, "king_admin/table_delete.html", locals())#locals 返回一个包含当前范围的局部变量字典。
331 # ————————23PerfectCRM实现King_admin数据删除————————
332 
333 # ————————36PerfectCRM实现King_admin密码修改————————
334 #密码修改
335 @login_required # 登陆后页面才能访问
336 def password_reset(request,app_name,model_name,obj_id):
337     admin_obj = base_admin.site.registered_sites[app_name][model_name]#表类
338     model_form = forms.CreateModelForm(request,admin_obj=admin_obj)#modelform 生成表单 加验证
339     obj=admin_obj.model.objects.get(id=obj_id)#类表的对象
340     errors={}#错误提示
341     if request.method=='POST':
342         _password1=request.POST.get('password1')  #获取页面输入的值
343         _password2=request.POST.get('password2')  #获取页面输入的值
344         if _password1==_password2:
345             if len(_password1)>5:
346                 obj.set_password(_password1)#继承Django方法 #加密
347                 obj.save()   #保存
348                 return redirect(request.path.rstrip('password/') + ('/change/'))  #替换URL名
349             else:
350                 errors['password_too_short']='必须不少于6字符'
351         else:
352             errors['invalid_password']='两次输入的密码不一样'#密码不一致
353 
354     return render(request, "king_admin/password_reset.html", locals())#locals 返回一个包含当前范围的局部变量字典。
355 # ————————36PerfectCRM实现King_admin密码修改————————
356 
357 # ————————37PerfectCRM实现King_admin添加用户时密码加密————————
358 def password_add(request,app_name,model_name):
359     return redirect("/king_admin/%s/%s/add/" % (app_name, model_name))  # 转到添加页面
360 # ————————37PerfectCRM实现King_admin添加用户时密码加密————————
#views

  1 # settings.py
  2 
  3 """
  4 Django settings for PerfectCRM project.
  5 
  6 Generated by 'django-admin startproject' using Django 2.0.3.
  7 
  8 For more information on this file, see
  9 https://docs.djangoproject.com/en/2.0/topics/settings/
 10 
 11 For the full list of settings and their values, see
 12 https://docs.djangoproject.com/en/2.0/ref/settings/
 13 """
 14 
 15 import os
 16 
 17 # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
 18 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 19 
 20 
 21 # Quick-start development settings - unsuitable for production
 22 # See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/
 23 
 24 # SECURITY WARNING: keep the secret key used in production secret!
 25 SECRET_KEY = 'atkhzsd7emv4_okn@ynhji)p)qbpuvhq+a7@yx5=chaa0$l_br'
 26 
 27 # SECURITY WARNING: don't run with debug turned on in production!
 28 DEBUG = True
 29 
 30 ALLOWED_HOSTS = []
 31 
 32 
 33 # Application definition
 34 
 35 INSTALLED_APPS = [
 36     'django.contrib.admin',
 37     'django.contrib.auth',
 38     'django.contrib.contenttypes',
 39     'django.contrib.sessions',
 40     'django.contrib.messages',
 41     'django.contrib.staticfiles',
 42     
 43 # ————————04PerfectCRM实现King_admin注册功能————————
 44     # 'crm.apps.CrmConfig',
 45     'crm',
 46 # ————————04PerfectCRM实现King_admin注册功能————————
 47 
 48 # ————————02PerfectCRM创建ADMIN页面————————
 49     'king_admin',
 50 # ————————02PerfectCRM创建ADMIN页面————————
 51     # ————————38PerfectCRM实现全局账号登录注销————————
 52     'gbacc',
 53     # ————————38PerfectCRM实现全局账号登录注销————————
 54 
 55 ]
 56 
 57 MIDDLEWARE = [
 58     'django.middleware.security.SecurityMiddleware',
 59     'django.contrib.sessions.middleware.SessionMiddleware',
 60     'django.middleware.common.CommonMiddleware',
 61     'django.middleware.csrf.CsrfViewMiddleware',
 62     'django.contrib.auth.middleware.AuthenticationMiddleware',
 63     'django.contrib.messages.middleware.MessageMiddleware',
 64     'django.middleware.clickjacking.XFrameOptionsMiddleware',
 65 ]
 66 
 67 ROOT_URLCONF = 'PerfectCRM.urls'
 68 
 69 TEMPLATES = [
 70     {
 71         'BACKEND': 'django.template.backends.django.DjangoTemplates',
 72 # ————————02PerfectCRM创建ADMIN页面————————
 73         'DIRS': [os.path.join(BASE_DIR, 'templates'),
 74                   os.path.join(BASE_DIR, 'king_admin/king_templates'),
 75 
 76 # ————————03PerfectCRM创建基本数据————————
 77                   os.path.join(BASE_DIR, 'DBadd/DBadd_templates'),
 78 # ————————03PerfectCRM创建基本数据————————
 79                 # ————————38PerfectCRM实现全局账号登录注销————————
 80                   os.path.join(BASE_DIR, 'gbacc/gbacc_templates'), ]
 81                 # ————————38PerfectCRM实现全局账号登录注销————————
 82         
 83         ,
 84 # ————————02PerfectCRM创建ADMIN页面————————
 85         'APP_DIRS': True,
 86         'OPTIONS': {
 87             'context_processors': [
 88                 'django.template.context_processors.debug',
 89                 'django.template.context_processors.request',
 90                 'django.contrib.auth.context_processors.auth',
 91                 'django.contrib.messages.context_processors.messages',
 92             ],
 93         },
 94     },
 95 ]
 96 
 97 WSGI_APPLICATION = 'PerfectCRM.wsgi.application'
 98 
 99 
100 # Database
101 # https://docs.djangoproject.com/en/2.0/ref/settings/#databases
102 
103 DATABASES = {
104     'default': {
105         'ENGINE': 'django.db.backends.sqlite3',
106         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
107     }
108 }
109 
110 
111 # Password validation
112 # https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators
113 
114 AUTH_PASSWORD_VALIDATORS = [
115     {
116         'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
117     },
118     {
119         'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
120     },
121     {
122         'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
123     },
124     {
125         'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
126     },
127 ]
128 
129 
130 # Internationalization
131 # https://docs.djangoproject.com/en/2.0/topics/i18n/
132 
133 # ————————01PerfectCRM基本配置ADMIN————————
134 #LANGUAGE_CODE = 'en-us'
135 
136 #英文转中文方法
137 LANGUAGE_CODE = 'zh-Hans'
138 # ————————01PerfectCRM基本配置ADMIN————————
139 
140 TIME_ZONE = 'UTC'
141 
142 USE_I18N = True
143 
144 USE_L10N = True
145 
146 USE_TZ = True
147 
148 
149 # Static files (CSS, JavaScript, Images)
150 # https://docs.djangoproject.com/en/2.0/howto/static-files/
151 
152 STATIC_URL = '/static/'
153 
154 # ————————01PerfectCRM基本配置ADMIN————————
155 STATICFILES_DIRS = [os.path.join(BASE_DIR,'king_admin/static'),
156 # ————————01PerfectCRM基本配置ADMIN————————
157                     # ————————38PerfectCRM实现全局账号登录注销————————
158                     os.path.join(BASE_DIR, 'gbacc/static'),]
159                     # ————————38PerfectCRM实现全局账号登录注销————————
160 
161 # ————————34PerfectCRM实现CRM自定义用户————————
162 AUTH_USER_MODEL = 'crm.UserProfile'#使用自定的admin 表单
163 # ————————34PerfectCRM实现CRM自定义用户————————
164 
165 
166 
167 # ————————44PerfectCRM实现账号快速注册登陆————————
168 # send e-mail
169 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'  #email后端
170 EMAIL_USE_TLS = False   #是否使用TLS安全传输协议
171 EMAIL_USE_SSL = True    #是否使用SSL加密,qq企业邮箱要求使用
172 EMAIL_HOST = 'smtp.sina.cn'   #发送邮件的邮箱 的 SMTP服务器       #根据情况重新配置
173 EMAIL_PORT = 465                 #发件箱的SMTP服务器端口 #一般不需要修改465
174 EMAIL_HOST_USER = '[email protected]'    #发送邮件的邮箱账号     #根据情况重新配置  #[email protected]   [email protected]
175 EMAIL_HOST_PASSWORD = 'admin123456'         #发送邮件的邮箱密码    #根据情况重新配置
176 
177 # ————————44PerfectCRM实现账号快速注册登陆————————
178 
179 
180 # ————————46PerfectCRM实现登陆后页面才能访问————————
181 LOGIN_URL = '/gbacc/gbacc_login/'# login_url 配置      #默认 /accounts/login/  #注意: / (绝对路径)
182 # ————————46PerfectCRM实现登陆后页面才能访问————————
# settings.py

猜你喜欢

转载自www.cnblogs.com/ujq3/p/8855853.html