Django框架初体验(二)
数据库配置
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
语句)。 - 创建可以与
Question
和Choice
对象进行交互的 Python 数据库 API。
但是首先得把 polls
应用安装到我们的项目里。
为了在我们的工程中包含这个应用,我们需要在配置类 INSTALLED_APPS
中添加设置。因为 PollsConfig
类写在文件 polls/apps.py
中,所以它的点式路径是 'polls.apps.PollsConfig'
。在文件 mysite/settings.py
中 INSTALLED_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框架初体验(二)相关推荐
- Scrapy 爬虫框架初体验二 —— 以一个新闻站点爬取为例
一.搭建基础 Scrapy 工程框架 创建项目 输入如下命令: scrapy startproject NewsSpider # 创建项目 cd NewsSpider scrapy genspider ...
- Django框架初体验(一)
起因 事情的起初是老师认为.NET这块现在用的不多,就让我们.NET和Python一块学,最后的课程交两份作业... 老师原话: Emmmmmm 所以就只能先看文档探探路了 Django官网 在安装D ...
- python的scrapy爬虫模块间进行传参_小猪的Python学习之旅 —— 4.Scrapy爬虫框架初体验...
小猪的Python学习之旅 -- 4.Scrapy爬虫框架初体验 Python 引言: 经过前面两节的学习,我们学会了使用urllib去模拟请求,使用 Beautiful Soup和正则表达式来处理网 ...
- 自然语言处理NLP星空智能对话机器人系列:Facebook StarSpace框架初体验
自然语言处理NLP星空智能对话机器人系列:Facebook StarSpace框架初体验 目录 Facebook StarSpace github StarSpace 安装部署 编译星际空间 Face ...
- 【Flask框架】一. Flask框架初体验(配置环境 + 简单demo样例)
文章目录 一. Flask框架初体验(配置环境 + 简单demo样例) 虚拟环境 新建项目 将Pycharm改为FLASK_DEBUG模式 修改FLASK_DEBUG模式的步骤 配置文件 简单用法 U ...
- Windows Embedded Standard开发初体验(二)
支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...
- Windows Embedded CE 6.0开发初体验(二)CE开发环境 收藏
上一篇<Windows Embedded CE 6.0开发初体验>之"嵌入式开发流程": http://blog.csdn.net/aawolf/archive/200 ...
- Windows Embedded CE 6.0开发初体验(二)CE开发环境
CE开发环境 下面就要让今天的主角闪亮登场了--Digi CC 9P开发板.为了感谢Digi提供的开发板,还是给他们做个广告吧:这是一家以WiFi相关产品为主营业务的公司,也生产ARM架构的CPU,所 ...
- 树莓派驱动6轴传感器MPU6500与SPI初体验(二)
接前回<< 树莓派驱动6轴传感器MPU6500与SPI初体验 对于一个想做嵌入开发的外围开发者,做硬件相关的应用开发真的是老太太啃骨头.一周以后凭借一点小聪明和给力的度娘,总算在树梅派上实 ...
最新文章
- @Async的异步任务多起来了,如何配置多个线程池来隔离任务?
- 低功耗智能硬件开源平台-FireBLE开发板
- 爬了菊姐的两万条评论,竟发现菊粉都是这样的人!
- IFrame标签的两个用法介绍
- NB-IoT---(0) NB-IoT技术
- 【转】Android-Input 按键字符映射文件输入设备配置文件
- glEnable/glDisable(GL_CULL_FACE)与glCullFace()
- idea 断点调试 以及 tomcat 无法访问
- PowerDesigner模型设计1
- 分享5个viewport相关的jQuery插件
- Latex制作beamer幻灯片、写论文的基本语句
- 【独家专访】李飞飞团队、康奈尔Weinberger团队、密歇根大学最新CVPR热点论文作者解读
- Android wps自定义功能,完美兼容安卓4.2新增多项功能 WPS移动版升级至5.2
- 苦咖啡·唯一 - 那奇沃夫/KKECHO
- cosolog打印带样式的文字及图片
- vs2012 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包。
- Java基础の乱弹琴二:break关键字
- 编程方式操作WorkFlow
- 传说中的ARM架构与X86架构
- 智能家居Homekit解决方案
热门文章
- 在2410上移植uboot1.3.2【转】
- Linux内核分析 读书笔记 (第五章)
- 商朝·商高·勾三股四玄五·勾股定理
- 一种基于智能卡登录Windows系统的实现方式
- 大数据知识图谱项目——基于知识图谱的医疗知识问答系统(详细讲解及源码)
- 大数据时代的地理信息系统发展
- 【好书推荐】《华为数据之道》
- AppleScript 实现 imessage 批量推送 苹果推 (亲测通过)
- ABAP-1-会计凭证批量数据导入本地ACCESS
- 重磅:保姆级Java技术图谱发布!够学到元宵节了,赶紧收藏!