• Django项目:CRM(客户关系管理系统)--55--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)#循环打印 配置文件.设置.安装应用程序#.Perfectcustomersettings里的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()默认删除空白符(包括'
    ', '
    ',  '	',  ' ')
    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             if email:
    294                 obj=admin_obj.model.objects.filter(email=email).first()  # 对象
    295                 obj.set_password(password)  # 加密
    296             try:
    297                 obj.save()#表单验证通过保存
    298             except Exception as e:
    299                 return redirect("/king_admin/%s/%s/" % (app_name, model_name))
    300             # ————————37PerfectCRM实现King_admin添加用户时密码加密————————
    301 
    302             #from django.shortcuts import redirect
    303             return  redirect("/king_admin/%s/%s/" % (app_name,model_name))
    304     return render(request, "king_admin/table_add.html", locals())
    305 # ————————22PerfectCRM实现King_admin数据添加————————
    306 
    307 
    308 # ————————23PerfectCRM实现King_admin数据删除————————
    309 @login_required # 登陆后页面才能访问
    310 def table_delete(request,app_name,model_name,obj_id):
    311     admin_obj = base_admin.site.registered_sites[app_name][model_name]#表类
    312     objs=admin_obj.model.objects.filter(id=obj_id)#类的对象
    313 
    314     # ————————33PerfectCRM实现King_admin编辑整张表限制————————
    315     # if request.method=='POST':
    316     #     objs.delete()#删除
    317     #     return redirect("/king_admin/%s/%s/" % (app_name,model_name))#转到列表页面
    318 
    319     app_name=app_name
    320     if admin_obj.readonly_table:
    321         errors={'锁定的表单':'该表单:<%s>,已经锁定,不能删除当前记录!'%model_name}
    322     else:
    323         errors={}
    324     if request.method=='POST':
    325         if  not admin_obj.readonly_table:
    326             objs.delete()#删除
    327             return redirect("/king_admin/%s/%s/" % (app_name,model_name))#转到列表页面
    328     # ————————33PerfectCRM实现King_admin编辑整张表限制————————
    329     
    330 
    331     return render(request, "king_admin/table_delete.html", locals())#locals 返回一个包含当前范围的局部变量字典。
    332 # ————————23PerfectCRM实现King_admin数据删除————————
    333 
    334 # ————————36PerfectCRM实现King_admin密码修改————————
    335 #密码修改
    336 @login_required # 登陆后页面才能访问
    337 def password_reset(request,app_name,model_name,obj_id):
    338     admin_obj = base_admin.site.registered_sites[app_name][model_name]#表类
    339     model_form = forms.CreateModelForm(request,admin_obj=admin_obj)#modelform 生成表单 加验证
    340     obj=admin_obj.model.objects.get(id=obj_id)#类表的对象
    341     errors={}#错误提示
    342     if request.method=='POST':
    343         _password1=request.POST.get('password1')  #获取页面输入的值
    344         _password2=request.POST.get('password2')  #获取页面输入的值
    345         if _password1==_password2:
    346             if len(_password1)>5:
    347                 obj.set_password(_password1)#继承Django方法 #加密
    348                 obj.save()   #保存
    349                 return redirect(request.path.rstrip('password/') + ('/change/'))  #替换URL名
    350             else:
    351                 errors['password_too_short']='必须不少于6字符'
    352         else:
    353             errors['invalid_password']='两次输入的密码不一样'#密码不一致
    354 
    355     return render(request, "king_admin/password_reset.html", locals())#locals 返回一个包含当前范围的局部变量字典。
    356 # ————————36PerfectCRM实现King_admin密码修改————————
    357 
    358 # ————————37PerfectCRM实现King_admin添加用户时密码加密————————
    359 def password_add(request,app_name,model_name):
    360     return redirect("/king_admin/%s/%s/add/" % (app_name, model_name))  # 转到添加页面
    361 # ————————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 = 'perfectcrm@sina.cn'    #发送邮件的邮箱账号     #根据情况重新配置  #perfectcrm@sina.cn   pydjango@sina.cn
    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

  • 相关阅读:
    我看这篇对初学者很有帮助就转载了 Web.config (转载)
    自动开关机
    想换个地方了
    浅析软件项目管理中十个误区
    如何结束测试员和程序员之间的战争
    程序员四大忌 你该如何避免?(2006.01.13 来自:希赛)
    完整的变更请求管理解决方案
    情人节,我加班
    需求分析,你呀你!(源自Linuxaid.com.cn )
    转贴一篇对技术人员的十大忠告,希望新的一年有所提升!
  • 原文地址:https://www.cnblogs.com/ujq3/p/8855853.html
Copyright © 2020-2023  润新知