一.url
二.views
三.templates
四.models
五.admin
二。
models.py class School(models.Model): name=models.CharField(max_length=32) class Meta: db_table='School' def __str__(self): return self.name class Classes(models.Model): name=models.CharField(max_length=32) sc = models.ForeignKey(to='School',on_delete=models.CASCADE) m=models.ManyToManyField(to='Teacher',related_name='clas') class Meta: db_table='Classes' def __str__(self): return self.name class Student(models.Model): name=models.CharField(max_length=32) cs=models.ForeignKey(to='Classes',related_name='stu',on_delete=models.CASCADE) class Meta: db_table='Student' def __str__(self): return self.name class Teacher(models.Model): name=models.CharField(max_length=32) class Meta: db_table='Teacher' def __str__(self): return self.name
1. ORM一对多
1.1 正向查 (多表夸表查询)
views.py ret=models.Student.objects.all().values('name','cs__name','cs__sc__name')#三个表联合查询,ForenginKey特点,如果有还可以更多 for obj in ret: print(obj['name'],obj['cs__name'],obj['cs__sc__name'])
1.2 反向查 (小写类名_set)
obj=models.Classes.objects.filter(id=2).first() # stu=obj.student_set.all() stu=obj.stu.all()#cs=models.ForeignKey(to='Classes',related_name='stu',on_delete=models.CASCADE),stu等价于student_set
#区别 models.Student.objects.values('name','cs__name')#以学生表查(多方),学生全部列出,班级是否列出看其是否有对应学生 models.Classes.objects.values('name','stu__name')#以班级表查(一方),班级全部列出,学生是否列出看其是否有对应班级
2 . ORM多对多
1.1 和‘一对多’一样
print(models.Classes.objects.values('name','m','m__name'))#正向 print(models.Teacher.objects.values('name','clas',clas__name'))#反向
1.2 add()
#正向—→在第三张表中为一个班级添加一名老师 obj=models.Classes.objects.filter(id=1).first() obj.m.add(2) #反向—→在第三张表中为一个老师添加一个班级 obj=models.Teacher.objects.filter(id=4).first() obj.clas.add(3)1.3 set()
#反向set方法(正向同理),为一个老师设置三个班级,表中老师和班级与设定不一致的——删除,一致的——保留,缺少的——添加 obj = models.Teacher.objects.filter(id=2).first() obj.clas.set([1,3])
(五)admin是django强大功能之一,它能共从数据库中读取数据,呈现在页面中,进行管理。默认情况下,它的功能已经非常强大,如果你不需要复杂的功能,它已经够用,但是有时候,一些特殊的功能还需要定制,比如搜索功能,下面这一系列文章就逐步深入介绍如何定制适合自己的admin应用。
如果你觉得英文界面不好用,可以在setting.py 文件中修改以下选项
1
|
LANGUAGE_CODE
=
'en-us'
#LANGUAGE_CODE = 'zh-hans'
|
1 认识ModelAdmin
管理界面的定制类,如需扩展特定的model界面需从该类继承。
2 注册medel类到admin的两种方式:
<1> 使用register的方法
1
|
admin.site.register(Book,MyAdmin)
|
<2> 使用register的装饰器
1
|
@admin
.register(Book)
|
3 通过命令 python manage.py createsuperuser 来创建超级用户
python manage.py createsuperuser Username (leave blank to use 'root'): admin Email address: [email protected] Password: Password (again): Superuser created successfully. [root@solar HelloWorld]
三 掌握一些常用的设置技巧
- list_display: 指定要显示的字段
- search_fields: 指定搜索的字段
- list_filter: 指定列表过滤器
- ordering: 指定排序字段
6.auth
2018-5-17
FBV和CBV
CBV:
1.
2.
3.请求流程