1.安装(快捷安装)
pip install django
验证系统是否已成功安装django,可以使用下面的命令:
python -m django --version
2.创建一个工程
django-admin startproject mysite
使用上面的命令,你将在当前目录下创建一个名字为mysite的工程。
接下来,看一下,我们新建的工程目录的样子:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
根目录mysite/是我们工程的一整个容器,名称是我们自定义的。manage.py一个可用来以不同方式和django工程进行交互的命令行实体。里面的mysite/目录是我们工程的python包。mysite/init.py一个空文件用来告诉python这个目录是一个python包。mysite/settings工程的setting/configuration文件,mysite/urls.py工程的url声明,mysite/wsgi.py服务于工程的web服务器入口
3. 简单的验证一下,工程是否可以正常工作
python manage.py runserver
该命令会默认开启服务器在127.0.0.1:8000地址和端口上,当然了,我们可以自行指定地址和端口,在上面命令的后面加上地址和端口即可。
4.创建一个app
python manage.py startapp polls
这将创建一个polls目录,它看起来是这样的:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
5.写view
首先写个简单的view,文件polls/views.py加入下面code:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
为了调用这个view中的函数。我们还需要写相应的url。我们在polls目录下新增一个文件urls.py。polls/urls.py文件内容,如下:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
这样,当前我们的app目录结构就变成如下所示:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
urls.py
views.py
接下来,我们要在工程目录的url中(也就是mysite/urls.py),加入polls.urls.py模块。所以当前的mysite/urls.py文件内容,变成如下所示:
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^polls/', include('polls.urls')),
url(r'^admin/', admin.site.urls),
]
include 函数允许我们引用其他的URLconfs.不过请注意:对应于include函数的正则表达式结尾没有$,取而代之的是一个/。不论什么时候,当django遇到include()函数时,它都会去除匹配到的url字符串中的部分,将剩余的部分发送到include中的URLconfs作进一步处理。这种方法的理念是让即插即用的urls更容易实现。注意:在包含其他的URLconfs的时候,最好都是用include()。
url 函数有四个参数,其中两个必填的是regex和view,两个可选的参数:kwargs和name
1.regex:正则表达式,django从第一个表达式开始对比,直到找到匹配的那一个。正则表达式的编> 译实在第一个加载URLconfs的时候完成。
2.view: 当django匹配到一个正则后,会调用指定的views的函数,该函数把一个HttpRequest类作> 为第一个参数,被正则匹配到的部分作为其他参数(如果正则使用的是简单抓捕,值作为位置参数
传入到view的函数中,如果采用的是命名抓捕,值作为关键字参数传入到view的函数中)。
3.kwargs:任意地关键字参数可以通过字典的形式传入到目标view中,目前使用不到。
4.name : 命名url,使我们可以明确地在django中引用,特别是模板中。这种强大的功能可以让我们> 在只修改一个文件的情况下,全局的对工程的url做出修改。
6.数据库设置
在setttings.py文件中,默认我们使用的是Python自带的Sqlite数据库,配置信息如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
如果你不想使用Sqlite数据库,想使用其他类型的数据库,把 ‘ENGINE’的值改为如下对应的合适的值:
’django.db.backends.sqlite3’,
’django.db.backends.postgresql’,
’django.db.backends.mysql’,
’django.db.backends.oracle’.
‘NAME’为数据库的名称,如果使用Sqlite,数据库是一个文件,该字段的值为文件的绝对路径,默认情况下,值为上述的情况,即数据库文件位于工程目录下。
如不使用Sqlite数据库,需要在‘default’的值中添加字段(USER、PASSWORD和HOST),举例如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'mydatabaseuser',
'PASSWORD': 'mypassword',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
当我们编辑setttings.py文件时,把TIME_ZONE的值设置为当前时区。INSTALLED_APPS字段的值为django实例中被激活的应用,默认该字段包含以下apps:
• django.contrib.admin – The admin site. 很快,你将用到它
• django.contrib.auth – An authentication system.一个认证系统
• django.contrib.contenttypes – A framework for content types.
• django.contrib.sessions – A session framework.
• django.contrib.messages – A messaging framework.
• django.contrib.staticfiles – A framework for managing static files.管理静态文件的框架
这些app至少用到一个数据库表,所以当我们想要使用时,必须首先在数据库中创建出来,使用下面的命令即可完成:
python manage.py migrate
migrate命令首先查看setttings.py中INSTALLED_APPS部分并创建出所需要的数据库表,再成功执行命令后,登陆数据库的客户端执行如下命令,可以查看创建出来的表
\dt (PostgreSQL),
SHOW TABLES; (MySQL),
.schema (SQLite),
SELECT TABLE_NAME FROM USER_TABLES;(Oracle)
7.创建models
在我们的polls app中,我们将定义一个Question和一个Choice model.编辑polls/models.py文件,内容如下:
from django.db import models
class 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)
在settings.py的INSTALLED_APPS部分,加入polls app,内容如下:
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
现在我们就可以运行下面的命令来创建migrations对于改变的部分
python manage.py makemigrations polls
命令输出类似下面信息:
Migrations for 'polls':
polls/migrations/0001_initial.py:
- Create model Choice
- Create model Question
- Add field question to choice
通过运行makemigrations,告诉django我们的models发生了变化,并希望把变化保存在一个migration中。migrations是一个文件用于django怎样保存models的变化部分
现在运行下面命令来应用models所做的变化来创建或修改表
python manage.py migrate
总结:改变数据库models的三步走方针:
- 1.修改models.py文件中的models
- 2,执行命令:
python manage.py makemigrations
- 3.执行命令:
python manage.py migrate
分离2创建migrations和3应用migrate的原因是因为你可以提交migrations到版本控制系统上供在使用你的app上应用,方便了你的开发和别人应用到生产环境中。