数据库配置

Djongo使用 SQLite 作为默认数据库,如果你想使用其他数据库,你需要安装合适的 database bindings ,然后改变设置文件中 DATABASES 'default' 项目中的一些键值:

  • ENGINE – 可选值有 'django.db.backends.sqlite3''django.db.backends.postgresql''django.db.backends.mysql',或 'django.db.backends.oracle'。其它 可用后端。
  • NAME - 数据库的名称。如果使用的是 SQLite,数据库将是你电脑上的一个文件,在这种情况下, NAME 应该是此文件的绝对路径,包括文件名。默认值 os.path.join(BASE_DIR, 'db.sqlite3') 将会把数据库文件储存在项目的根目录。

默认开启的某些应用需要至少一个数据表,所以,在使用他们之前需要在数据库中创建一些表。请执行以下命令:

py manage.py migrate

创建模型

在 Django 里写一个数据库驱动的 Web 应用的第一步是定义模型 - 也就是数据库结构设计和附加的其它元数据。

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

每个字段都是 Field 类的实例 - 比如,字符字段被表示为 CharField ,日期时间字段被表示为 DateTimeField 。这将告诉 Django 每个字段要处理的数据类型。

激活模型

上面的一小段用于创建模型的代码给了 Django 很多信息,通过这些信息,Django 可以:

  • 为这个应用创建数据库 schema(生成 CREATE TABLE 语句)。
  • 创建可以与 QuestionChoice 对象进行交互的 Python 数据库 API。

但是首先得把 polls 应用安装到我们的项目里。

为了在我们的工程中包含这个应用,我们需要在配置类 INSTALLED_APPS 中添加设置。因为 PollsConfig 类写在文件 polls/apps.py 中,所以它的点式路径是 'polls.apps.PollsConfig'。在文件 mysite/settings.pyINSTALLED_APPS 子项添加点式路径后,它看起来像这样:

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

现在你的 Django 项目会包含 polls 应用。接着运行下面的命令:

py manage.py makemigrations polls

通过运行 makemigrations 命令,Django 会检测你对模型文件的修改(在这种情况下,你已经取得了新的),并且把修改的部分储存为一次 迁移

Django 有一个自动执行数据库迁移并同步管理你的数据库结构的命令 - 这个命令是 migrate,我们马上就会接触它 - 但是首先,让我们看看迁移命令会执行哪些 SQL 语句。sqlmigrate 命令接收一个迁移的名称,然后返回对应的 SQL:

py manage.py sqlmigrate polls 0001

现在,再次运行 migrate 命令,在数据库里创建新定义的模型的数据表

from django.db import modelsclass Question(models.Model):# ...def __str__(self):return self.question_textclass Choice(models.Model):# ...def __str__(self):return self.choice_text

给模型增加 __str__() 方法是很重要的,这不仅仅能给你在命令行里使用带来方便,Django 自动生成的 admin 里也使用这个方法来表示对象。

介绍 Django 管理页面

为你的员工或客户生成一个用户添加,修改和删除内容的后台是一项缺乏创造性和乏味的工作。因此,Django 全自动地根据模型创建后台界面。

创建一个管理员账号

py manage.py createsuperuser

键入你想要使用的用户名,然后按下回车键:

Username: admin

然后提示你输入想要使用的邮件地址:

Email address: admin@example.com

最后一步是输入密码。你会被要求输入两次密码,第二次的目的是为了确认第一次输入的确实是你想要的密码。

Password: **********
Password (again): *********
Superuser created successfully.

启动开发服务器

Django 的管理界面默认就是启用的

py manage.py runserver

现在,打开浏览器,转到你本地域名的 “/admin/” 目录, – 比如 “http://127.0.0.1:8000/admin/” 。你应该会看见管理员登录界面:

向管理页面中加入投票应用

打开polls/admin.py

from django.contrib import adminfrom .models import Questionadmin.site.register(Question)

注意事项:

  • 这个表单是从问题 Question 模型中自动生成的
  • 不同的字段类型(日期时间字段 DateTimeField 、字符字段 CharField)会生成对应的 HTML 输入控件。每个类型的字段都知道它们该如何在管理页面里显示自己。
  • 每个日期时间字段 DateTimeField 都有 JavaScript 写的快捷按钮。日期有转到今天(Today)的快捷按钮和一个弹出式日历界面。时间有设为现在(Now)的快捷按钮和一个列出常用时间的方便的弹出式列表。

页面的底部提供了几个选项:

  • 保存(Save) - 保存改变,然后返回对象列表。
  • 保存并继续编辑(Save and continue editing) - 保存改变,然后重新载入当前对象的修改界面。
  • 保存并新增(Save and add another) - 保存改变,然后添加一个新的空对象并载入修改界面。
  • 删除(Delete) - 显示一个确认删除页面。

Django框架初体验(二)相关推荐

  1. Scrapy 爬虫框架初体验二 —— 以一个新闻站点爬取为例

    一.搭建基础 Scrapy 工程框架 创建项目 输入如下命令: scrapy startproject NewsSpider # 创建项目 cd NewsSpider scrapy genspider ...

  2. Django框架初体验(一)

    起因 事情的起初是老师认为.NET这块现在用的不多,就让我们.NET和Python一块学,最后的课程交两份作业... 老师原话: Emmmmmm 所以就只能先看文档探探路了 Django官网 在安装D ...

  3. python的scrapy爬虫模块间进行传参_小猪的Python学习之旅 —— 4.Scrapy爬虫框架初体验...

    小猪的Python学习之旅 -- 4.Scrapy爬虫框架初体验 Python 引言: 经过前面两节的学习,我们学会了使用urllib去模拟请求,使用 Beautiful Soup和正则表达式来处理网 ...

  4. 自然语言处理NLP星空智能对话机器人系列:Facebook StarSpace框架初体验

    自然语言处理NLP星空智能对话机器人系列:Facebook StarSpace框架初体验 目录 Facebook StarSpace github StarSpace 安装部署 编译星际空间 Face ...

  5. 【Flask框架】一. Flask框架初体验(配置环境 + 简单demo样例)

    文章目录 一. Flask框架初体验(配置环境 + 简单demo样例) 虚拟环境 新建项目 将Pycharm改为FLASK_DEBUG模式 修改FLASK_DEBUG模式的步骤 配置文件 简单用法 U ...

  6. Windows Embedded Standard开发初体验(二)

    支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...

  7. Windows Embedded CE 6.0开发初体验(二)CE开发环境 收藏

    上一篇<Windows Embedded CE 6.0开发初体验>之"嵌入式开发流程": http://blog.csdn.net/aawolf/archive/200 ...

  8. Windows Embedded CE 6.0开发初体验(二)CE开发环境

    CE开发环境 下面就要让今天的主角闪亮登场了--Digi CC 9P开发板.为了感谢Digi提供的开发板,还是给他们做个广告吧:这是一家以WiFi相关产品为主营业务的公司,也生产ARM架构的CPU,所 ...

  9. 树莓派驱动6轴传感器MPU6500与SPI初体验(二)

    接前回<< 树莓派驱动6轴传感器MPU6500与SPI初体验 对于一个想做嵌入开发的外围开发者,做硬件相关的应用开发真的是老太太啃骨头.一周以后凭借一点小聪明和给力的度娘,总算在树梅派上实 ...

最新文章

  1. @Async的异步任务多起来了,如何配置多个线程池来隔离任务?
  2. 低功耗智能硬件开源平台-FireBLE开发板
  3. 爬了菊姐的两万条评论,竟发现菊粉都是这样的人!
  4. IFrame标签的两个用法介绍
  5. NB-IoT---(0) NB-IoT技术
  6. 【转】Android-Input 按键字符映射文件输入设备配置文件
  7. glEnable/glDisable(GL_CULL_FACE)与glCullFace()
  8. idea 断点调试 以及 tomcat 无法访问
  9. PowerDesigner模型设计1
  10. 分享5个viewport相关的jQuery插件
  11. Latex制作beamer幻灯片、写论文的基本语句
  12. 【独家专访】李飞飞团队、康奈尔Weinberger团队、密歇根大学最新CVPR热点论文作者解读
  13. Android wps自定义功能,完美兼容安卓4.2新增多项功能 WPS移动版升级至5.2
  14. 苦咖啡·唯一 - 那奇沃夫/KKECHO
  15. cosolog打印带样式的文字及图片
  16. vs2012 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包。
  17. Java基础の乱弹琴二:break关键字
  18. 编程方式操作WorkFlow
  19. 传说中的ARM架构与X86架构
  20. 智能家居Homekit解决方案

热门文章

  1. 在2410上移植uboot1.3.2【转】
  2. Linux内核分析 读书笔记 (第五章)
  3. 商朝·商高·勾三股四玄五·勾股定理
  4. 一种基于智能卡登录Windows系统的实现方式
  5. 大数据知识图谱项目——基于知识图谱的医疗知识问答系统(详细讲解及源码)
  6. 大数据时代的地理信息系统发展
  7. 【好书推荐】《华为数据之道》
  8. AppleScript 实现 imessage 批量推送 苹果推 (亲测通过)
  9. ABAP-1-会计凭证批量数据导入本地ACCESS
  10. 重磅:保姆级Java技术图谱发布!够学到元宵节了,赶紧收藏!