加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

CRM项目实战-实现任意表的增删改查

发布时间:2020-12-20 11:02:30 所属栏目:Python 来源:网络整理
导读:form验证? 属性required=False 浏览器不验证 {{ field.error.0 }}? 不加0会显示列表形式 form_obj.save() 保存数据更新 from django.shortcuts import render,redirect from django.contrib.auth import authenticate,login,logout from django.contrib.auth

form验证? 属性required=False 浏览器不验证

{{ field.error.0 }}? 不加0会显示列表形式

form_obj.save()  保存数据更新

from django.shortcuts import render,redirect
from django.contrib.auth import authenticate,login,logout
from django.contrib.auth.decorators import login_required
from django import conf
from django.db.models import Q
from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage
from kingadmin import app_setup
from kingadmin import form_handle
app_setup.kingadmin_auto_discover()


from kingadmin.sites import  site
print("sites.",site.enabled_admins)

# for k,v in site.enabled_admins.items():
#     for table_name,admin_class in v.items():
#         print(table_name,id(admin_class))
# # Create your views here.


def app_index(request):
    #enabled_admins =

    return render(request,kingadmin/app_index.html,{site:site})

def get_filter_result(request,querysets):
    filter_conditions = {}
    for key,val in request.GET.items():
        if key in (_page,_o,_q):continue
        if val:
            filter_conditions[key] =  val


    print("filter_conditions",filter_conditions)
    return querysets.filter(**filter_conditions),filter_conditions

def get_orderby_result(request,querysets,admin_class):
    """排序"""

    current_ordered_column = {}
    orderby_index = request.GET.get(_o)
    if orderby_index:
        orderby_key =  admin_class.list_display[ abs(int(orderby_index)) ]
        current_ordered_column[orderby_key] = orderby_index #为了让前端知道当前排序的列

        if orderby_index.startswith(-):
            orderby_key =  -+ orderby_key

        return querysets.order_by(orderby_key),current_ordered_column
    else:
        return querysets,current_ordered_column


def get_serached_result(request,admin_class):


    search_key = request.GET.get(_q)
    if search_key :
        q = Q()
        q.connector = OR

        for search_field in admin_class.search_fields:
            q.children.append(("%s__contains"% search_field,search_key))


        return  querysets.filter(q)
    return querysets




# @login_required
def table_obj_list(request,app_name,model_name):
    """取出指定model里的数据返回给前端"""
    #print("app_name,model_name:",site.enabled_admins[app_name][model_name])
    admin_class = site.enabled_admins[app_name][model_name]
    querysets = admin_class.model.objects.all().order_by(-id)

    querysets,filter_condtions  = get_filter_result(request,querysets)
    admin_class.filter_condtions = filter_condtions

    #searched queryset result
    querysets = get_serached_result(request,admin_class)
    admin_class.search_key = request.GET.get(_q,‘‘)

    #sorted querysets
    querysets,sorted_column = get_orderby_result(request,admin_class)


    paginator = Paginator(querysets,2) # Show 25 contacts per page

    page = request.GET.get(_page)
    try:
        querysets = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer,deliver first page.
        querysets = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999),deliver last page of results.
        querysets = paginator.page(paginator.num_pages)
    print(request.GET)
    #print("admin class",admin_class.model )

    return render(request,kingadmin/table_obj_list.html,{querysets:querysets,admin_class:admin_class,sorted_column:sorted_column})


# @login_required
def table_obj_change(request,model_name,obj_id):
    """kingadmin 数据修改页"""
    admin_class = site.enabled_admins[app_name][model_name]
    model_form = form_handle.create_dynamic_model_form(admin_class)
    obj = admin_class.model.objects.get(id=obj_id)
    if request.method == "GET":
        form_obj = model_form(instance=obj)
    elif request.method == "POST":
        form_obj = model_form(instance=obj,data=request.POST)
        if form_obj.is_valid():
            form_obj.save()
            return redirect("/kingadmin/%s/%s/" %(app_name,model_name))

    # from crm.forms import CustomerForm
    #
    # form_obj = CustomerForm()
    return render(request,kingadmin/table_obj_change.html,locals())


def table_obj_add(request,model_name):
    admin_class = site.enabled_admins[app_name][model_name]
    model_form = form_handle.create_dynamic_model_form(admin_class,form_add=True)
    if request.method == "GET":
        form_obj = model_form()
    elif request.method == "POST":
        form_obj = model_form(data=request.POST)
        if form_obj.is_valid():
            form_obj.save()
            return redirect("/kingadmin/%s/%s/" % (app_name,model_name))

    return render(request,kingadmin/table_obj_add.html,locals())


def acc_login(request):
    error_msg = ‘‘
    if request.method == "POST":
        username = request.POST.get(username)
        password = request.POST.get(password)

        user = authenticate(username=username,password=password)
        if user:
            print("passed authencation",user)
            login(request,user)
            #request.user = user

            return  redirect( request.GET.get(next,/kingadmin/) )
        else:
            error_msg = "Wrong username or password!"
    return render(request,kingadmin/login.html,{error_msg:error_msg})


def acc_logout(request):
    logout(request)
    return redirect("/login/")
views

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读