昨天写了python3.5+django2.0快速入门(一)今天将讲解配置数据库,创建模型,还有admin的后台管理。

配置数据库

我们打开mysite/mysite/settings.py这个文件。

我们可以看到熟悉的databases,默认配置的数据库是 SQLite,如果你想使用其它的数据库,需要在文件中的 DATABASES 'default' 改变适当的值。

os.path.join(BASE_DIR, 'db.sqlite3')表示在你项目根目录下的一个文件。

比如我们想要连接mysql:

我们还可以通过这样修改时区和中文设置。

我们还可以看到INSTALLED_APPS有这些应用

在django中一些应用程序使用至少一个数据库表,因此我们需要在数据库中创建表,然后才能使用它们。

直接在终端输入命令:python manage.py migrate

创建模型

激活模型

可以在INSTALLED_APPS里面加上'staffadmin'或者'staffadmin.apps.staffadminConfig'

  

经过上面的操作我们已经注册staffadmin这个应用了,因为我们之前对模型做了一些改变,并且你想要把这些改变保存为 migration

直接在终端输入命令:python manage.py makemigrations staffadmin

如果我们想知道这个命令到底做了些什么,可以通过在终端直接输入命令: python manage.py sqlmigrate staffadmin 0001

熟悉数据库的同学一看就明白,这不就是创建数据库表的操作命令吗?没错的确如此。

然后我们还差最后一步就可以把数据库创建起来,

直接在终端输入命令: python manage.py migrate staffadmin

直到这一步,我们的数据库已经建好。现在我还要提醒的是,migrate 命令会执行所有还没应用的迁移,

并会在数据库中执行相应的代码来同步你的修改.迁移是一个非常强大且有用的工具,可以让你在开发项目的任何时候,

不需要对数据库进行删除增加等操作就完成修改,在升级数据库信息时也不会造成丢失.现在只需要记住以下这三个步骤:

  • 修改你的模型(在 models.py 文件中).
  • 运行 python manage.py makemigrations来为这些修改创建迁移.
  • 运行 python manage.py migrate 来应用这些改变到数据库.

操作数据库(models)

操作数据库无非就是增删改查。

首先我们在终端输入命令python manage.py shell,然后先把我们的数据库表引进来。

from staff.modles import  Department

  1. # 增
    # models.Department.objects.create(department_name='市场部') 增加一条数据,可以接受字典类型数据 **kwargs
  2.  
  3. # obj = models.Department(department_name='市场部')
  4. # obj.save()
  5.  
  6. # 查
  7. # models.Department.objects.get(id=1) # 获取id=1的单条数据,不存在则报错(不建议)
  8. # models.Department.objects.all() # 获取全部数据
  9. # models.Department.objects.filter(department_name='市场部') # 获取department_name='市场部'的数据
  10. # models.Department.objects.exclude(department_name='市场部') # 获取除了department_name='市场部'的数据
  11.  
  12. # 删
  13. # models.Department.objects.filter(department_name='市场部').delete() # 删除department_name='市场部'的数据
  14.  
  15. # 改
  16. # models.Department.objects.filter(department_name='市场部').update(department_name='运营部') # 将department_name="市场部"改成"运营部",均支持 **kwargs
  17. # obj = models.Department.objects.get(id=1)
  18. # obj.department_name= '运营部'
  19. # obj.save() # 保存数据
    *当有一对多,多对一,或者多对多的关系的时候,先把相关的对象查询出来
  20.  
  21. 在这里我提一下ForeignKey,ManyToManyFieldOneToOneField分别是Model中定义多对一,多对多,一对一关系。
  22.  

  23. 在本例的教程中,我们可以知道一个员工只有一个部门,一个部门可以有多个员工,所以用了ForeignKeyField

最后我们介绍一下admin站点的使用

首先我们先创建一个超级用户的账号

直接在终端输入命令:python manage.py createsupperuser,然后根据提示输入相关内容即可。

此时我们可以通过浏览器访问http://127.0.0.1:8000/admin/,我们会看到下面的画面。

此时我们发现我们写的models没有显示出来,是因为没有在admin上面注册。

所以我们打开mysite/staffadmin/admin.py这个文件

然后我们把models引进来

写下如下代码:

保存代码,然后刷新浏览器我们发现多了一个staffadmin的管理组

最后我们可以点进去看下到底有什么

通过界面展示我们可以轻松的完成数据库表的增删改查的操作了。

由于时间紧迫,后面的就简单的带过了。可能写的还有些不足,不明白的问题可以在下方评论区留言哈!

python3.5+django2.0快速入门(二)的更多相关文章

  1. python3.5+django2.0快速入门(一)

    因为这篇教程需要用到anaconda的一些操作,如果还不懂anaconda的操作的同学可以看下这篇文章python 入门学习之anaconda篇. 创建python3+的开发环境 直接在终端输入:co ...

  2. TensorFlow 2.0 快速入门指南 | iBooker·ApacheCN

    原文:TensorFlow 2.0 Quick Start Guide 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活 ...

  3. ExtJs 6.0+快速入门,ext-bootstrap.js文件的分析,各版本API下载

    ExtJS6.0+快速入门+API下载地址 ExtAPI 下载地址如下,包含各个版本 http://docs.sencha.com/misc/guides/offline_docs.html 1.使用 ...

  4. Python3.6+Django2.0以上 xadmin站点的配置和使用

    1. xadmin的介绍 django自带的admin站点虽然功能强大,但是界面不是很好看.而xadmin界面好看,功能更强大,并完全支持Bootstrap主题模板.xadmin内置了丰富的插件功能. ...

  5. 【Python3.6+Django2.0+Xadmin2.0系列教程一】环境搭建及项目创建

    由于工作需要,接触了大半年时间的Django+xadmin框架,一直没空对这块对进行相关的梳理.最近在同事的怂恿下,就在这分享下笔者的学习及工作经验吧. 好了,话不多说,下面开始进入正题: 环境需求: ...

  6. Python3.7+Django2.0.4配合Mongodb打造高性能高扩展标签云存储方案

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_141 书接上回,之前有一篇文章提到了标签云系统的构建:Python3.7+jieba(结巴分词)配合Wordcloud2.js来构 ...

  7. python3下Django2.0配置最新xadmin详解

    1,打开pycharm,创建一个Django项目 2,安装Django,默认是最新版本,pip3 install -i https://pypi.douban.com/simple/ django 3 ...

  8. python3.6 + django2.0.6 + xadmin0.6

    django2.0集成xadmin0.6报错集锦 http://www.lybbn.cn/data/bbsdatas.php?lybbs=50 1.django2.0把from django.core ...

  9. 【Python3.6+Django2.0+Xadmin2.0系列教程之二】学生信息管理系统(入门篇)

    上一篇我们已经创建好了一个Xadmin的基础项目,现在我们将在此基础上构建一个同样很基础的学生信息管理系统. 一.创建模型 模型是表示我们的数据库表或集合类,并且其中所述类的每个属性是表或集合的字段, ...

随机推荐

  1. STM32CubeMX FreeRTOS no definition for "osThreadGetState" 解决办法

    用STM32CubuMX默认加入的FreeRTOS默认配置eTaskGetState是禁止的 把该功能设为Enabled编译就不会出错了 IAR的编译器要勾选Allow VLA

  2. Android Studio的安装

    下载Android Studio(需要翻墙才能安装得快):直接到官网进行下载就可以了.下载地址:https://developer.android.com/ “Android Virtual Devi ...

  3. CSS3之mix-blend-mode

    <!-- more --> 在线编辑demo 属性描述了元素的内容应该与元素的直系父元素的内容和元素的背景如何混合. mix-blend-mode: normal; //正常 mix-bl ...

  4. RAC heartbeat 心跳机制

    世界上最遥远的距离,不是生与死.而是我们同一个集群的两个节点,你却听不到我的心跳. 必要性:维持集群的⼀致性RAC⼼跳机制 – 集群⼼跳基本机制:1.确定节点和节点间的连通性,达到彼此了解2.⽤共享的 ...

  5. Django【第14篇】:Django之Form组件补充

    补充 一.定义的规则 class TeacherForm(Form): #必须继承Form # 创建字段,本质上是正则表达式 username = fields.CharField( required ...

  6. django之表单类

    一:表单类 一般我们在html中自己写的表单类似于下面的样子 <!DOCTYPE html> <html lang="en"> <head> & ...

  7. SpringBoot中资源初始化加载的几种方式

    一.问题 在平时的业务模块开发过程中,难免会需要做一些全局的任务.缓存.线程等等的初始化工作,那么如何解决这个问题呢?方法有多种,但具体又要怎么选择呢? 二.资源初始化 1.既然要做资源的初始化,那么 ...

  8. python 7行代码实现微信机器人自动回复

    首先 需要去 图灵 网站注册 获取api_key 先上代码 from wxpy import * bot = Bot() tuling = Tuling(api_key='你的api_key') @b ...

  9. 【NOIP2016提高A组8.12】奇袭

    题目 由于各种原因,桐人现在被困在Under World(以下简称UW)中,而UW马上要迎来最终的压力测试--魔界入侵. 唯一一个神一般存在的Administrator被消灭了,靠原本的整合骑士的力量 ...

  10. 【leetcode】837. New 21 Game

    题目如下: 解题思路:这个题目有点像爬楼梯问题,只不过楼梯问题要求的计算多少种爬的方式,但是本题是计算概率.因为点数超过或者等于K后就不允许再增加新的点数了,因此我们可以确定最终Alice拥有的点数的 ...