django对数据的操作采用的是ORM模式,即将数据库的增删改查抽象成对象方法的调用,开发人员只需要调用相关的方法,而不需要写sql语句。
使用交互shell
进入交互shell环境(推荐安装ipython)
☁ mysite python manage.py shell
Python 3.6.6 (default, Sep 5 2018, 08:57:22)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.5.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]:
添加数据
In [1]: from django.contrib.auth.models import User
In [2]: from blog.models import Post
In [3]: user = User.objects.get(username='admin')
In [4]: post = Post(title='静夜思',
...: slug='jing-ye-si',
...: body='举头望明月,低头思故乡',
...: author=user)
...:
In [5]: post.save()
进入后台查看post数据 http://127.0.0.1:8000/admin/blog/post/
新文章修改数据
若post已经指定了一个数据,再调用save,即相当于修改原记录
In [7]: post
Out[7]: <Post: 静夜思>
In [8]: post.body = '床前明月光,疑是地上霜'
In [9]: post.save()
后台查看post内容 http://127.0.0.1:8000/admin/blog/post/2/change/
修改内容查询数据
- all 获取所有内容
In [10]: all_posts = Post.objects.all() # 检索所有的文章
In [11]: all_posts
Out[11]: <QuerySet [<Post: 静夜思>, <Post: 清平调其一>]>
- filter 过滤内容
In [13]: Post.objects.filter(publish__year=2018)
Out[13]: <QuerySet [<Post: 静夜思>, <Post: 清平调其一>]>
In [14]: Post.objects.filter(publish__year=2018, title='静夜思')
Out[14]: <QuerySet [<Post: 静夜思>]>
- exclude 反向搜索
In [15]: Post.objects.filter(publish__year=2018).exclude(title__startswith='静') # 检索2018年发布,且除了标题是以‘静’字开头的文章
Out[15]: <QuerySet [<Post: 清平调其一>]>
- order_by 排序
到后台再新增几条数据
将进酒
君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪!
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我倾耳听。
钟鼓馔玉不足贵,但愿长醉不复醒。
古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马、千金裘,呼儿将出换美酒,与尔同销万古愁!
将进酒
望庐山瀑布
日照香炉生紫烟,遥看瀑布挂前川。
飞流直下三千尺,疑是银河落九天。
望庐山瀑布
In [17]: Post.objects.all()
Out[17]: <QuerySet [<Post: 望庐山瀑布>, <Post: 将进酒>, <Post: 静夜思>, <Post: 清平调其一>]>
In [22]: Post.objects.order_by('publish') # 按 publish 正序
Out[22]: <QuerySet [<Post: 清平调其一>, <Post: 静夜思>, <Post: 将进酒>, <Post: 望庐山瀑布>]>
In [23]: Post.objects.order_by('-publish') # 按 publish 倒序
Out[23]: <QuerySet [<Post: 望庐山瀑布>, <Post: 将进酒>, <Post: 静夜思>, <Post: 清平调其一>]>
删除数据
In [29]: post = Post.objects.get(title='静夜思')
In [30]: post
Out[30]: <Post: 静夜思>
In [31]: post.delete()
Out[31]: (1, {'blog.Post': 1})
In [32]: post
Out[32]: <Post: 静夜思>
In [33]: Post.objects.all()
Out[33]: <QuerySet [<Post: 望庐山瀑布>, <Post: 将进酒>, <Post: 清平调其一>]>
下一节将讲解如何创建文章的列表页和详情页。如果你感兴趣,请关注我的django2实战
文集
如果觉得本文对你有所帮助,点个赞,或者赏杯咖啡钱,你的认可对我很重要
网友评论