django和vue,Djang(在前端仿DjangoAdmin同樣效果)

 2023-10-18 阅读 30 评论 0

摘要:一.在app中創建python文件(例如:kings.py) django和vue、 ? 如圖:生成的數據為{"app名":{"表名"userprofileadmin類},實際上就是admin.py中的admin.site.register(models.UserProfile,UserProfileAdmin)注冊 from app01 i

一.在app中創建python文件(例如:kings.py)

django和vue、

?

如圖:生成的數據為{"app名":{"表名"userprofileadmin類},實際上就是admin.py中的admin.site.register(models.UserProfile,UserProfileAdmin)注冊

from app01 import models#{"app01":{"userprofile"userprofileadmin類}
enabled_admins={}
#1.創建基類
class BaseAdmin(object):list_display=[]list_filter=[]class UserPorfileAdmin(BaseAdmin):list_display = ["name","user_id"]#model=models.Customer AAA
class RoleAdmin(BaseAdmin):list_display = ["name"]'''
register函數相當于admin.site.register()
models_class._meta.app_label  app名字
models_class._meta.model_name 表名
'''
def register(models_class,admin_class=None):    #models_class是表名,admin_class相當于app01.admin中的UserProfileAdminif models_class._meta.app_label not in enabled_admins:enabled_admins[models_class._meta.app_label]={}admin_class.model=models_class                #相當于上AAA===將CustomerAdmin和Customer表關聯enabled_admins[models_class._meta.app_label][models_class._meta.model_name]=admin_classregister(models.UserProfile,UserPorfileAdmin)
register(models.Role,RoleAdmin)

?

---------------總urls.py
urlpatterns = [path('admin/', admin.site.urls),path('app01/',include('app01.urls')),path('kingadmin/',include("kingadmin.urls")),
]
----------kingadmin-urls.py
from django.urls import path,re_path
from kingadmin import viewsurlpatterns = [path("",views.tables),re_path("(\w+)/(\w+)",views.tables_info,name="tables_info"),
]
-------kingadmin-views.pyfrom django.shortcuts import render
from kingadmin import kings# Create your views here.
def tables(request):# print(kings.enabled_admins["app01"]["userprofile"])return render(request,"kingadmin/tables.html",{"table_list":kings.enabled_admins})
def tables_info(request,app_name,table_name):return render(request,"kingadmin/table_info.html",{"table_list":kings.enabled_admins[app_name][table_name]})
-------tables.html<div class="panel-body"><div class="bs-example" data-example-id="simple-table"><table class="table">{% for app_name,app_tables in table_list.items %}<thead><tr><th>{{ app_name }}</th></tr></thead><tbody>{% for table_name,admin in app_tables.items %}<tr><!--此處url是當前的url:127.0.0.1:8000/kingadmin---><td><a href="{% url 'tables_info' app_name table_name %}">{% render_table_name admin %}</a></td><td>add</td><td>change</td></tr>{% endfor %}</tbody>{% endfor %}</table></div></div>
--------tables_info.html
{%load "tags"%}
<div class="bs-example" data-example-id="simple-table"><table class="table"><thead><tr>{% for filed in table_list.list_display %} <!---tabel_list是userprofileadmin類--><td>{{ filed }}</td> <!--filed是字符串形式--->{% endfor %}</tr></thead><tbody>{% render_table_filed_value table_list as t%} <!--這是返回的表中所有數據-->{% for i in t %} <!--i為每一行的對象---><tr>{% table_filed_value i table_list as f%} <!--每行得到的數據-->{{ f }}</tr>{% endfor %}</tbody></table></div></div>
-------tags.pyfrom django import template
from django.utils.safestring import mark_saferegister = template.Library()   #register的名字是固定的,不可改變

@register.simple_tag
def render_table_name(admin_class):      #返回表名(中文)return admin_class.model._meta.verbose_name@register.simple_tag
def render_table_filed_value(admin_class): #返回從models表中查詢得到的數據data=admin_class.model.objects.all()return data@register.simple_tag
def table_filed_value(obj,admin_class):fil_datas=""for data in admin_class.list_display:get_data=getattr(obj,data)fil_datas+="<td>%s</td>"%(get_data)return mark_safe(fil_datas)

?

轉載于:https://www.cnblogs.com/gaoyukun/p/9222025.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/149873.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息