创建Django项目
(env)$:django-admin startproject blog
创建一个Django项目,名字叫blog
(env)$:ls
blog env
进入blog目录
(env)$:cd blog当前目录会新建一个blog文件夹,结构如下
blog/
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
__init__.py
:将目录变成一个python的模块;settings.py
:指定django与系统和项目管理交互的配置文件,在开发中会不断的修改;urls.py
:指定django如何相应浏览器请求;wsgi.py
:是web server gateway interface(web服务器网关接口)首字母缩写。
Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。
创建数据库
django项目的大部分信息都要存储在数据库中,因此我们要创建数据库,命令如下:
(env)$:python manager.py migrate
Operations to perform:
① Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying sessions.0001_initial... OK
首次执行migrate命令,将确保django与项目当前状态匹配。在①处创建django所必要的数据库表。
(env)$: ls
blog db.sqlite3 manage.py
运行ls命令,django又创建了一个db.sqlite3文件,这是一个数据库文件,sqlite是一个文件的简单数据库,它不需要配置,是简单应用的最佳选择。
SQLite 是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程序库中。与许多其它数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中。
开发服务器
执行下列命令:
(env)$: python manage.py runserver
Performing system checks...
① System check identified no issues (0 silenced).
② Django version 1.11.4, using settings 'blog.settings'
③ Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
在①处django检测项目没有问题;②处显示django版本为1.11.4以及配置文件blog.settings;③处显示测试服务器地址。
打开浏览器输入地址http://127.0.0.1:8000/,出现如下的界面表示程序正常运行。
创建博客应用(App)
在django中一个项目是特定网站的配置和应用程序的集合。应用程序类似于Blog应用、问答应用或者投票应用等。一个项目可以有多个应用程序,一个应用程序可以被多个项目使用。
(env)$:python manage.py startapp blogpost
(env)$: ls
blog blogpost db.sqlite3 manage.py
manage.py startapp命令将创建一个django应用程序所必须的文件
blogpost目录如下
blogpost
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
migrations 包含对模型定义与修改的迁移记录;
admin.py 是对 Django 站点管理的定制;
apps.py 包含对 App 的配置;
models.py 是对模型的定义;
tests.py 包含单元测试;
views.py 提供各种视图函数。
最后在blog目录下的setting.py文件中将App注册到项目中。
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 注册App
'blogpost',
]