前戏
我们来完成一个图书管理系统的增删改查
表结构设计
1. 出版社
id name
2. 作者
id name
3. 书
id title 出版社_id
4. 作者_书_关系表
id 书_id 作者_id
创建表
现在有个需求,当我们访问http://127.0.0.1:8080/press_list/这个网址时,django给我们返回所有的出版社名称,我们可以在models里创建一个press的类来生成数据表
class Press(models.Model): id = models.AutoField(primary_key=True) # id主键 name = models.CharField(max_length=32) # 出版社名称
然后再Terminal里执行下面的两句代码:
python manage.py makemigrations
python manage.py migrate
然后我们去往数据库里手动插入几条数据,添加好了之后我们该干什么了呢?想一想我上篇文章写的和上上篇文章写的,我们在浏览器访问上面的url是不是django先去url.py里去找这个路径,那我们就去url.py里添加一个
url(r'^press_list/', views.press_list),
添加好了,这个函数是不是还没有,那在去views里添加一个press_list的函数,记得导入这个类
def press_list(request): ret = Press.objects.all() # 查询所有的出版社 print(ret) return HttpResponse('ok')
结果
<QuerySet [<Press: Press object>, <Press: Press object>, <Press: Press object>]>
打印出来的是一个对象,大家在学面向对象的时候记不记得有个魔术方法__str__,通常用法是把对象的值打印出来,我们在去Press类里添加下面的代码
# __str__ 如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值。 class Foo(object): def __str__(self): return 'zouzou' def eat(self): print('we are eating...') obj = Foo() print(obj) 结果:zouzou