1、admin
a:models.py
- 创建表
b:admin.py
- 注册表 admin.site.register(models.UserInfo)
c:urls.py
- url(r'^admin/', admin.site.urls),
PS:
1、动态生成url
2、注册和生成url使用的都是admin.site
2、路由系统
一个路径对应一个视图
url(r'^index/$', views.index,name="n1"),
url(r'^index/(\d+)$', views.index,name="n2"), url(r'^blog/', include('blog.urls'))
有name的说明是反向解析,两种方式
代码中:
reverse('n1')
reverse('n2',args=(666,))
模板中:
{% url 'n1' %}
{% url 'n2' 666 %}
3、文件加载
第一次导入后,再次导入时不再重新加载
4、面向对象
- 封装
- 继承
示例:
1 class Base(object):
2 def init(self,val):
3 self.val = val
4
5 def func(self):
6 self.test()
7 print(self.val)
8
9 def test(self):
10 print("Base.test")
11
12 class Foo(Base):
13 def test(self):
14 print("FOO.test")
15
16 # def func(self):
17 # print(self.val,666)
18 #有就执行自己的,没有就执行父类的
19 class Bar(object):
20 def init(self):
21 self.register = {}
22
23 def regiter(self,a,b=None):
24 if not b:
25 b=Base
26 self.register[a] = b(a) #函数,类,对象
27
28 obj = Bar() #实例化就会去执行它自己的__init方法,并获取到一个对象b,b就可以调用里面的属性和方法了
29 obj.regiter(1,Foo)
30 obj.regiter(2)
31 print(obj._register) #{1: <__main.Foo object at 0x0000000002213160>, 2: <__main.Base object at 0x0000000002213198>}
32 #obj._register[1] == Foo(1)
33 obj._register[1].func() #Foo的对象 打印结果:FOO.test 1
34 obj._register[2].func() #Base的对象 打印结果:Base.test 2
三、具体来说django -admin的用法
首先需要发现的,当我们创建登录admin的时候,里面会有增删改查,不仅仅是这些功能,我们可以通过以下的方式设置一些样式
1、admin路由规则:
/admin/app01/role/ 查看角色列表 /admin/app01/role/add/ 添加角色 /admin/app01/role/2/change/ 编辑 /admin/app01/role/2/delete/ 删除 /admin/app01/userinfo/ /admin/应用名/表名 /admin/app01/userinfo/add/ /admin/应用名/表名/功能名
/admin/app01/userinfo/1/change/ /admin/app01/userinfo/1/delete/
2、如何使用之具体操作:http://www.cnblogs.com/wupeiqi/articles/7444717.html</span></p>
3、原理:
- 路由关系
- 对应视图函数
admin的使用
自定制admin
首先创建表:
1 from django.db import models 2 class UserInfo(models.Model): 3 name = models.CharField(max_length=32,verbose_name="用户名") 4 email = models.EmailField(max_length=32,verbose_name="邮箱") 5 ut = models.ForeignKey(to="UserType",verbose_name="所属类型") 6 7 8 class UserType(models.Model): 9 caption = models.CharField(max_length=32,verbose_name="用户类型名称") 10 roles = models.ManyToManyField(to="Role",verbose_name="所属角色") 11 12 class Role(models.Model): 13 name = models.CharField(max_length=32,verbose_name="角色名")