admin组件之URL分配
在刚学admin的时候会惊奇的发现,就一个关于admin的URL
url(r'^admin/', admin.site.urls),
居然能够所有创建表格的增删改查
于是乎:
这么炫酷的技能我当然要get呀!!!
于是我要自己创建一个路由:Xadmin
# 下面是创建分布路由的方法
url("^yuan/",([
url(r'^test01/', ([
url(r'^test04/', test04),
url(r'^test05/', test05),
],None,None)),
url(r'^test02/', test02),
url(r'^test03/', test03),
],None,None)),
于是我们就想,能不能把上面的子路由用一个函数来实现
#这里url后面的参数,一个是路径,一个是视图函数,视图函数里面可以插入元组
urlpatterns = [
url(r'^Xadmin/', (get_urls(),None,None)),
]
上面就是先创建一个路由,之后我们自己写入路由函数
def get_urls():
print(admin.site._registry) # {Book:modelAdmin(Book),.......}
# 定义一个空列表存放其他的路由
temp=[]
for model,admin_class_obj in admin.site._registry.items(): # 重点是实现视图model里面每个类的循环
app_name=model._meta.app_label # 可以得到项目app的名字字符串
model_name=model._meta.model_name # 可以得到model里面类的名字字符串
# 配置路由路径,并配置字字路由
temp.append(url(r'^{0}/{1}/'.format(app_name,model_name), (get_urls_2(),None,None)),)
return temp
# 子路由的子路由
def get_urls_2():
temp=[]
temp.append(url(r"^$",list_view)) # 单表的查
temp.append(url(r"^add/$",add_view)) # 单表的增
temp.append(url(r"^(\d+)/change/$",change_view)) # 单表的改
temp.append(url(r"^(\d+)/delete/$",delete_view)) # 单表的删
return temp
通过上面的方法我们就可以实现admin的路由了!啊哈!
人生苦短,我学Python!