密码  用户  色彩  取得  90后  or  脏话  红包

您所在的位置:小祥子 » 编程 » Python » 正文

Django web 开发入门教程 (一)

时间:2015-08-11 编辑:小麦粉 来源:CnBlogs

reference: https://docs.djangoproject.com/en/1.8/intro/tutorial01/

编写第一个 Django 应用

Let’s learn by example.

Throughout this tutorial, we’ll walk you through the creation of a basic poll application.

It’ll consist of two parts:

  • A public site that lets people view polls and vote in them.
  • An admin site that lets you add, change and delete polls.

We’ll assume you have Django installed already. You can tell Django is installed and which version by running the following command:

$ python -c "import django; print(django.get_version())"
安装 Django

创建项目

如果你是首次使用 Django, 你需要特别注意一些初始设置。也就是说,你需要自动生成一些代码用于建立 Django项目。 一个 Django项目也就是一个Django 实例的设置,包括数据库配置,Django 特定的选项和应用的特定设置。

cc@debian:~$ . py-env-dj-1.8/bin/activate
(py-env-dj-1.8)cc@debian:~$ mkdir django-project
(py-env-dj-1.8)cc@debian:~$ cd django-project/
(py-env-dj-1.8)cc@debian:~/django-project$ django-admin startproject mysite
(py-env-dj-1.8)cc@debian:~/django-project$ tree mysite/
mysite/
├── manage.py
└── mysite
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

1 directory, 5 files
  • 最外层的 mysite/ 只是项目的一个容器目录. 目录的名字和项目无关紧要,可以随便重命名。
  • manage.py: 一个可以让你与Django project 以多种方式交互的命令行工具。 更多关于 manage.pydjango-admin and manage.py.
  • 内层 mysite/ 目录是Django project 的Python 包. 目录的名字(mysite)也就是包名,用于各种import 操作。 (e.g. mysite.urls).
  • mysite/__init__.py: 空文件,表示Python 应该认为该目录是一个Python package. (Read more about packages in the official Python docs if you’re a Python beginner.)
  • mysite/settings.py: 设置或者配置Django project. Django settings will tell you all about how settings work.
  • mysite/urls.py: Django project 的 url 路由/分配声明. You can read more about URLs in URL dispatcher.
  • mysite/wsgi.py: 针对WSGI-compatible web 服务的项目入口点. See How to deploy with WSGI for more details.

数据库设置

打开 mysite/settings.py. 一个具有模块级的变量的Python module用于表示Django 的设置。

默认情况下, 配置使用SQLite。如果你是数据库新手或者仅仅是为了去了解Django,这已经是极好的了。 SQLite已经包含在Python中了, 因此你不必安装任何支持的东东。 当你开始一个实际的项目时,你可能需要使用一个更加健壮的数据库,如PostgreSQL 。

如果你想使用其他的数据库,那么安装相应的database bindings, 并且修改DATABASES 下面的键值项'default' 去匹配你的数据库连接设置。

  • ENGINE – 可以是 'django.db.backends.sqlite3', 'django.db.backends.postgresql_psycopg2', 'django.db.backends.mysql', 或者 'django.db.backends.oracle'. 其他的请参照。
  • NAME – 你的数据库的名字. 如果你是使用SQLite, 数据库是个文件数据库,这种情况下,NAME 应该是指定的数据库文件的绝对路径. 默认值是 os.path.join(BASE_DIR, 'db.sqlite3'), 即你的项目的当前目录

如果你不是在使用SQLite, 那么一些如USER, PASSWORD, HOST 的额外设置需要同时设置. 更多关于数据库设置,请参照DATABASES

# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

在编辑 mysite/settings.py同时, 设置TIME_ZONE 到你的时区。

同时, 请注意文件顶部的INSTALLED_APPS 设置项. 该项包含有当前Django 实例下所有活动Apps 的名字。. Apps 可以使用在多种项目中, 你可以打包和部署它们以用于其他的项目。

默认下, INSTALLED_APPS包含以下apps, 下面都是和Django 一并而来的:

  • django.contrib.admin – 管理员站点
  • django.contrib.auth – 认证系统
  • django.contrib.contenttypes – 用于 content types 的框架
  • django.contrib.sessions – 会话(session) 状态的框架
  • django.contrib.messages – 消息(messaging) 框架
  • django.contrib.staticfiles – 静态文件(static files) 管理框架.

These applications are included by default as a convenience for the common case.

这些应用中有些应用会用到只是一个数据表,因此,我们在使用它们之前,需要使用下面的命令进行创建数据表:

$ python manage.py migrate

指令migrate 查看INSTALLED_APPS 的设置并根据在mysite/settings.py 中的设置进行创建所有必要的数据表。

简化
就像上面所说,默认的应用程序是用于常规的情况,但并不是每个人都会用到这些应用。如果你不需要其中的一些,你完全可以毫无顾虑的注释掉或者移除他们。

用于开发调试的服务器

执行下面的指导进行验证Django 项目。

$ python manage.py runserver

你将会看到下面的命令行输出:

Performing system checks...

System check identified no issues (0 silenced).
August 11, 2015 - 06:34:32
Django version 1.8.3, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

你已经启动了开发服务器, 一个使用纯Python编写的轻量级Web 服务器。请注意不要将该服务器用于生产,这个Web 服务器只是用于快速开发,而不必去处理配置生产服务器(如Apache) 的项目事项。

现在服务器已经在运行中,使用你的Web 浏览器访问http://127.0.0.1:8000/. 你将会看到 “Welcome to Django” page, in pleasant, light-blue pastel. It worked!

Changing the port

By default, the runserver command starts the development server on the internal IP at port 8000.

If you want to change the server’s port, pass it as a command-line argument. For instance, this command starts the server on port 8080:

$ python manage.py runserver 8080

If you want to change the server’s IP, pass it along with the port. So to listen on all public IPs (useful if you want to show off your work on other computers on your network), use:

$ python manage.py runserver 0.0.0.0:8000

Full docs for the development server can be found in the runserver reference.
Automatic reloading of runserver

The development server automatically reloads Python code for each request as needed. You don’t need to restart the server for code changes to take effect. However, some actions like adding files don’t trigger a restart, so you’ll have to restart the server in these cases.
关键词:入门