Python学习笔记之Django创建第一个数据库模型的方法


Posted in Python onAugust 07, 2019

Django里面集成了SQLite的数据库,对于初期研究来说,可以用这个学习。

第一步,创建数据库就涉及到建表等一系列的工作,在此之前,要先在cmd执行一个命令:

python manage.py migrate

这个命令就看成一个打包安装的命令,它会根据mysite/settings.py的配置安装一系列必要的数据库表

第二步,我们要建立一个Model层,修改demo/model.py:

from django.db import models
classQuestion(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
classChoice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)

这个Model的内容包括创建表(对象)、确定变量(字段)的类型,以及外键方面的信息

第三步,要激活Model,那么现在helloworld/setting.py中修改:

INSTALLED_APPS =[
'demo.apps.DemoConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

主要是加了第一行的内容,这个在demo/apps下有的。目的是让Django知道有demo这个app。

然后就在cmd下面运行:

python manage.py makemigrations demo

可以看到在demo/migrations/0001_initial.py下面生成了很多代码

继续run这段代码,就完成了建表工作:

python manage.py sqlmigrate demo 0001

再跑一下migrate命令,把这些model创建到数据库表中

python manage.py migrate

第四步,也是比较好玩的了,就是要进入到python django的shell中,执行这个命令:

python manage.py shell

Python学习笔记之Django创建第一个数据库模型的方法

在这个里面,就可以通过命令行操作数据库了

先引入刚才创建好的model:

from demo.models importQuestion,Choice

这个命令,打印出Question所有的对象:

Question.objects.all()

然后创建一个Question的对象(或数据):

from django.utils import timezone
q =Question(question_text="What's new?", pub_date=timezone.now())
q.save()
q.id
q.question_text
q.pub_date
q.question_text = "What's up?"
q.save()
Question.objects.all()

第五步,然后polls/models.py中添加以下代码:

from django.db import models
from django.utils.encoding import python_2_unicode_compatible
@python_2_unicode_compatible# only if you need to support Python 2
classQuestion(models.Model):
# ...
def __str__(self):
return self.question_text
@python_2_unicode_compatible# only if you need to support Python 2
classChoice(models.Model):
# ...
def __str__(self):
return self.choice_text
import datetime
from django.db import models
from django.utils import timezone
classQuestion(models.Model):
# ...
def was_published_recently(self):
return self.pub_date >= timezone.now()- datetime.timedelta(days=1)

在这里__str__()是一个非常重要的方法,大概可以看成java里pojo对象的一个toString()方法

接下来,就可以在数据库中进行很多操作,在shell中输入以下的代码,就可以执行对数据库的增删查改:

from polls.models importQuestion,Choice
Question.objects.all()
Question.objects.filter(id=1)
Question.objects.filter(question_text__startswith='What')
from django.utils import timezone
current_year = timezone.now().year
Question.objects.get(pub_date__year=current_year)
Question.objects.get(id=2)
Question.objects.get(pk=1)
q =Question.objects.get(pk=1)
q.was_published_recently()
q =Question.objects.get(pk=1)
q.choice_set.all()
q.choice_set.create(choice_text='Not much', votes=0)
q.choice_set.create(choice_text='The sky', votes=0)
c = q.choice_set.create(choice_text='Just hacking again', votes=0)
c.question
q.choice_set.all()
q.choice_set.count()
Choice.objects.filter(question__pub_date__year=current_year)
c = q.choice_set.filter(choice_text__startswith='Just hacking')
c.delete()

操作django Admin

Django的管理端可以管理站点、管理账户权限等等。

在cmd运行以下的脚本创建账户:

python manage.py createsuperuser
Username: admin
Email address: admin@example.com
Password:**********
Password(again):*********
Superuser created successfully.

启动server:

python manage.py runserver 8081

访问链接地址:

http://127.0.0.1:8081/admin/

登录界面:

Python学习笔记之Django创建第一个数据库模型的方法

管理界面:

Python学习笔记之Django创建第一个数据库模型的方法

在demo/admin.py中添加代码注册对象:

from django.contrib import admin
from.models importQuestion
admin.site.register(Question)

刷新后即增加这个对象:

Python学习笔记之Django创建第一个数据库模型的方法

点击Questions进去:

Python学习笔记之Django创建第一个数据库模型的方法

这样,就可以在图形化的界面中执行增删查改了。

以上这篇Python学习笔记之Django创建第一个数据库模型的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入解析Python中的线程同步方法
Jun 14 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
Python中的浮点数原理与运算分析
Oct 12 Python
Python 查找字符在字符串中的位置实例
May 02 Python
Python实现的NN神经网络算法完整示例
Jun 19 Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
通过Python实现一个简单的html页面
May 16 Python
keras自动编码器实现系列之卷积自动编码器操作
Jul 03 Python
matplotlib绘制正余弦曲线图的实现
Feb 22 Python
Django后端按照日期查询的方法教程
Feb 28 Python
python执行js代码的方法
May 13 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 #Python
Python学习笔记之文件的读写操作实例分析
Aug 07 #Python
详解python中__name__的意义以及作用
Aug 07 #Python
Pandas0.25来了千万别错过这10大好用的新功能
Aug 07 #Python
Python编程学习之如何判断3个数的大小
Aug 07 #Python
Python使用import导入本地脚本及导入模块的技巧总结
Aug 07 #Python
python可视化篇之流式数据监控的实现
Aug 07 #Python
You might like
详细介绍:Apache+PHP+MySQL配置攻略
2006/09/05 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
2010/11/02 PHP
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
5种JavaScript脚本加载的方式
2017/01/16 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
Bootstrap进度条实现代码解析
2017/03/07 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
JS异步函数队列功能实例分析
2017/11/28 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
javascript标准库(js的标准内置对象)总结
2018/05/26 Javascript
vue和webpack安装命令详解
2018/06/15 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
2019/11/09 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
python分析nignx访问日志脚本分享
2015/02/26 Python
Python编写生成验证码的脚本的教程
2015/05/04 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
python 中的列表生成式、生成器表达式、模块导入
2019/06/19 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
keras多显卡训练方式
2020/06/10 Python
python re的findall和finditer的区别详解
2020/11/15 Python
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
公司股东出资证明书
2014/11/01 职场文书
元旦主持词开场白
2015/05/29 职场文书