如果你希望使用另外一种数据库,请配置合适的database binding,并在 DATABASES 'default'条目中修改以下的配置以匹配你的数据库连接的设置:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
''' django.contrib.admin —— 管理站点。你将在本教程的第2部分使用到它。 django.contrib.auth —— 认证系统。 django.contrib.contenttypes —— 用于内容类型的框架。 django.contrib.sessions —— 会话框架。 django.contrib.messages —— 消息框架。 django.contrib.staticfiles —— 管理静态文件的框架。 这些应用,默认包含在Django中,以方便通用场合下使用。 ''' INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'polls', 'student', ]
然而上面的部分应用至少需要使用一个数据库表,因此我们需要在使用它们之前先在数据库中创建相应的表。要做到这一点,打开命令窗口输入:
python manage.py migrate
migrate查看INSTALLED_APPS设置并根据mysite/settings.py文件中的数据库设置创建任何必要的数据库表,数据库的迁移还会跟踪应用的变化(我们稍后会讲到)。user如果你有兴趣,可以运行你的数据库的命令行客户端并输入dt (PostgreSQL), SHOW TABLES; (MySQL)或.schema (SQLite)来显示Django创建的表。就像我们上面说到的,以上包含的默认应用用于常见的场景,但并不是每个人都需要它们。 如果你不需要它们中的任何一个或所有应用,可以在运行migrate之前从INSTALLED_APPS中自由地注释或删除相应的行。migrate 命令将只为INSTALLED_APPS中的应用运行数据库的迁移。
这将创建一个目录polls,它的结构如下:
polls/
__init__.py
admin.py
migrations/
__init__.py
models.py
tests.py
views.py
我们的polls应用将基于这个目录结构。
之后我们就可以编辑polls/models.py文件,来编写我们自己的模块,并让它看起来像这样:
from django.db import models #导入django带的models模块 # Create your models here. class Student(models.Model): #继承models模块 name=models.CharField(max_length=50,unique=True,null=False)#Django认为必须有id这个属性,不写,也会为我们自动生成 age=models.IntegerField(default=0)
不同的models.xxxField() 有不同的参数,代表着一些之后数据库生成表的,长度、唯一、非空....一些状态
根据我们自己的需要来编写
激活模型
再次编辑mysite/settings.py文件,并修改INSTALLED_APPS设置以包含字符串'polls'。所以它现在是这样的:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'polls', ]现在Django知道要包含polls应用。 让我们运行另外一个命令:
注:sqlmigrate命令并不会在你的数据库上真正运行迁移文件 —— 它只是把Django 认为需要的SQL打印在屏幕上以让你能够看到。 这对于检查Django将要进行的数据库操作或者你的数据库管理员需要这些SQL脚本是非常有用的。
如果有兴趣,你还可以运行python manage.py check;它会检查你的项目中的模型是否存在问题,而不用执行迁移或者接触数据库。
现在,再次运行migrate命令以在你的数据库中创建模型所对应的表:
$ python manage.py migrate
Operations to perform:
Synchronize unmigrated apps: staticfiles, messages
Apply all migrations: admin, contenttypes, polls, auth, sessions
Synchronizing apps without migrations:
Creating tables...
Running deferred SQL...
Installing custom SQL...
Running migrations:
Rendering model states... DONE
Applying
migrate命令会找出所有还没有被应用的迁移文件(Django使用数据库中一个叫做django_migrations的特殊表来追踪哪些迁移文件已经被应用过),并且在你的数据库上运行它们 —— 本质上来讲,就是使你的数据库模式和你改动后的模型进行同步。
迁移功能非常强大,可以让你在开发过程中不断修改你的模型而不用删除数据库或者表然后再重新生成一个新的 —— 它专注于升级你的数据库且不丢失数据。请记住实现模型变更的三个步骤:
1.修改你的模型(在models.py文件中)。
2.运行python manage.py makemigrations ,为这些修改创建迁移文件
3.运行python manage.py migrate ,将这些改变更新到数据库中。
将生成和应用迁移文件的命令分成几个命令来执行,是因为你可能需要将迁移文件提交到你的版本控制系统中并跟随你的应用一起变化; 这样做不仅可以使开发变得更加简单,而且对其他开发者以及上线生产非常有用。
编写你的第一个视图
让我们来编写第一个视图。 打开polls/views.py文件并将以下Python代码写入:
polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
这可能是Django中最简单的视图。 为了能够调用这个视图,我们需要将这个视图映射到URL上 —— 利用一个URLconf。
要在polls目录中创建一个URLconf,创建一个名为urls.py的文件。你的应用的目录现在看起来应该像这样:
polls/
__init__.py
admin.py
models.py
tests.py
urls.py
views.py
在polls/views.py文件中键入如下代码:
from django.shortcuts import render def hello(request): return render(request,"hello.html") #调用我们这个函数的时候利用render()函数来渲染返回一个hello.html页面(页面自己创建)
from django.conf.urls import url from student import views as studentViews #导入我们自己的模块,并起一个别名 urlpatterns = [ url(r'^hello$', studentViews.hello), #可以直观的看出一会我们需要访问,hello来找到我们自己模块的studentViews.hello ]
from django.conf.urls import url,include #导入include模块 from django.contrib import admin #这是Django自带的 from polls import urls #导入我们自己创建的urls模块 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^student/', include(urls)),#通过include()把我们的polls/urls模块导入这里 ]这样我们的url就连接成功了
之后启动我们的Django项目,如果你不在外层的mysite目录下,那么进入这个目录,然后运行以下命令:
$ python manage.py runserver
你将看到命令行下输出了以下内容:
Performing system checks...
0 errors found
May 13, 2015 - 15:50:53
Django version 1.8, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
这表明你已经启动了Django开发服务器,一个用纯Python写的轻量级Web服务器。 我们在Django中内置了它,这样你就可以在不配置用于生产环境的服务器 —— 例如Apache —— 的情况下快速开发出产品,直到你准备好上线。
请注意:不要在任何生产环境使用这个服务器。它仅仅是用于在开发中使用。(我们的重点是编写Web框架,非Web服务器。)
既然服务器已经运行,请用你的浏览器访问 http://127.0.0.1:8000/student/hello。就可以通过我们刚才的步骤找到一个我们自己做的“hello.html”的页面。 它运行成功了!