Django基本命令
创建project
1 | $django-admin startproject myproject |
进入myproject目录
使用开发服务器
1 | $ python manage.py runserver |
会报错
1 | You're accessing the development server over HTTPS, but it only supports HTTP. |
django 默认的runserver使用的是http协议,如果需要https协议,需要以下3个库
1 | django-extensions |
安装
1 | pip install django-extensions |
配置django的settings.py文件
在INSTALLED_APPS下添加
1 | 'werkzeug_debugger_runserver', |
在终端以https的方式运行
1 | $python manage.py runserver_plus --cert server.crt |
创建APP
1 | $ python manage.py startapp learn |
创建数据库表或更改数据库表或字段
1 | # 1. 创建更改的文件 |
清空数据库
1 | $python manage.py flush |
创建超级管理员
1 | $python manage.py createsuperuser |
Django项目环境终端
1 | $python manage.py shell |
数据库命令行
1 | $python manage.py dbshell |
Django 会自动进入在settings.py中设置的数据库,如果是 MySQL 或 postgreSQL,会要求输入数据库用户密码。
在这个终端可以执行数据库的SQL语句。如果对SQL比较熟悉,可能喜欢这种方式。
视图
在/views.py中输入代码
1 | from django.http import HttpResponse |
如果想看见效果,我们需要将一个 URL 映射到它
为了创建 URLconf,请在 learn目录里新建一个 urls.py
文件。
在urls.py中输入代码
1 | from django.urls import path |
下一步是要在根 URLconf 文件中指定我们创建的 learn.urls
模块。在 vx/urls.py
文件的 urlpatterns
列表里插入一个 include()
, 如下:
1 | from django.contrib import admin |
函数 include()
允许引用其它 URLconfs。每当 Django 遇到 :func:~django.urls.include
时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URLconf 以供进一步处理。
我们设计 include()
的理念是使其可以即插即用。因为应用有它自己的URLconf( vx/urls.py
),他们能够被放在"/vx/" , "/fun_vx/" ,"/content/vx/"
,或者其他任何路径下,这个应用都能够正常工作。
当包括其它 URL 模式时你应该总是使用 include()
, admin.site.urls
是唯一例外。
运行
1 | $python manage.py runserver_plus --cert server.crt |
访问.../learn
即可看见简单的文字视图
数据库配置
vx/settings.py
是Django项目设置的python模块。
通常,这个配置文件使用 SQLite 作为默认数据库。如果你不熟悉数据库,或者只是想尝试下 Django,这是最简单的选择。Python 内置 SQLite,所以你无需安装额外东西来使用它。当你开始一个真正的项目时,你可能更倾向使用一个更具扩展性的数据库,例如 PostgreSQL,避免中途切换数据库这个令人头疼的问题。
如果你想使用其他数据库,你需要安装合适的 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')
将会把数据库文件储存在项目的根目录。
在编辑/settings之前,将TIME_ZONE设置为自己所在时区
通常, INSTALLED_APPS
默认包括了以下 Django 的自带应用:
django.contrib.admin
— 管理员站点, 你很快就会使用它。django.contrib.auth
— 认证授权系统。django.contrib.contenttypes
— 内容类型框架。django.contrib.sessions
— 会话框架。django.contrib.messages
— 消息框架。django.contrib.staticfiles
— 管理静态文件的框架。
这些应用被默认启用是为了给常规项目提供方便。
默认开启的某些应用需要至少一个数据表,所以,在使用他们之前需要在数据库中创建一些表。
1 | $python manage.py migrate |
创造模型
在 Django 里写一个数据库驱动的 Web 应用的第一步是定义模型 - 也就是数据库结构设计和附加的其它元数据。
在learn/models.py中创建python类
激活模型
创建模型的代码给了 Django 很多信息,通过这些信息,Django 可以:
- 为这个应用创建数据库 schema(生成
CREATE TABLE
语句)。 - 创建可以与
Question
和Choice
对象进行交互的 Python 数据库 API。
但是首先得把 learn
应用安装到我们的项目里。
为了在我们的工程中包含这个应用,我们需要在配置类 INSTALLED_APPS
中添加设置。因为 learnConfig
类写在文件 learn/apps.py
中,所以它的点式路径是 'learn.apps.learnConfig'
。在文件 mysite/settings.py
中 INSTALLED_APPS
子项添加点式路径。
运行命令进行模型迁移
1 | $python manage.py makemigrations learn |
运行migrate
命令在数据库里创建新定义的模型的数据表
1 | $python manage.py migrate |
迁移是非常强大的功能,它能让你在开发过程中持续的改变数据库结构而不需要重新删除和创建表 - 它专注于使数据库平滑升级而不会丢失数据。我们会在后面的教程中更加深入的学习这部分内容,现在,你只需要记住,改变模型需要这三步:
- 编辑
models.py
文件,改变模型。 - 运行
python manage.py makemigrations
为模型的改变生成迁移文件。 - 运行
python manage.py migrate
来应用数据库迁移。