Django快速入门

3,340 阅读4分钟
原文链接: zhuanlan.zhihu.com

本文搭配了Django在线环境 ,可以直接在线体验。

Django是一个非常流行的Python Web应用框架,采用了MVC的软件设计模式。MVC 即模型M,视图V和控制器C。Django的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django注重组件的重用性和“可插拔性”,敏捷开发和DRY法则(Don't Repeat Yourself)。

在线练习地址:Django在线实验室

本文为Django的简单快速入门,只是说带你了解Django,如果你想要系统学习Django,可以查看以下教程:

一、Django 是什么

Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站!何为优雅,请看 Django 的以下特点:

二、Django 的特点

2.1 强大的数据库功能

用 Python 的类继承,几行代码就可以拥有一个丰富、动态的数据库操作接口(API),如果需要你也能执行 SQL 语句进行数据库的增、删、查、改操作。

2.2 自带的强大后台功能

几行简单的代码就能让你的网站拥有一个强大的后台,轻松管理你的内容!

2.3 优雅的链接路由

用正则匹配方式匹配链接,传递到对应的函数,随意定义,如你所愿。

2.4 Model(模板)系统

易于扩展的 Model 系统,设计简易。易于代码解耦。

2.5 缓存系统

与 memcached 或其他的缓存系统联用,更出色的表现,更快的加载速度。

2.6 国际化

支持多语言英语,允许自定义翻译的字符,轻松翻译成多国语言。

三、Django 的基本使用

查看 Django 版本

在开发过程中,Django 版本很重要。不同的版本不同的特性,在不同版本下开发的程序不一定能相互兼容。在 Xfce 终端中输入如下代码:

$ python3
>>>import django
>>>print(django.VERSION)
>>>(1, 10, 4, 'final', 0)

这代表在实验楼环境中 Django 的版本是 1.10.4

3.2 新建一个 Django Project

这个命令我们在第一章中已经使用,可以翻看之前 HelloWorld 项目建立来实践:

$ django-admin.py startproject project-name

注意,在 Windows 系统下,如果报错,尝试用 django-admin 代替 django-admin.py。

在输入完该条指令后,系统会在当前目录增加一个项目名目录,并且其中存有最基础的 Django 项目文件。

3.3 新建 app

同样,在第一章中已经使用,可以翻看之前建立 Hello app 的操作流程来实践:

$ python3 manage.py startapp app-name

另有一种写法:

$ django-admin.py startapp app-name

一般一个项目会存有多个 app ,当然通用的 app 也可以在多个 Django 项目中通用这个 app。

3.4 同步数据库

$ python manage.py makemigrations
$ python manage.py migrate

这种方法可以创建表,当你在 models.py 中新增类时,运行它就可以自动在数据库中创建表,不用手动创建。

备注:对已有的 models 进行修改,Django 1.7 之前的版本是无法自动修改数据库表结构的,不过有第三方的 south 工具可以使用。

3.5 使用开发服务器

开发服务器,即开发时使用,一般修改代码后会自动重启,方便调试和开发,但是由于性能问题,建议只用来测试,不要用在生产环境。

# 默认情况下在 0.0.0.0:8080 启动
$ python manage.py runserver 

# 当提示端口被占用的时候,可以用其他端口

3.6 清空数据库

$ python manage.py flush

此命令会询问是 yes 还是 no,选择 yes 会把数据库全部清空掉,只留下空表。

3.7 创建超级管理员

$ python manage.py createsuperuser

# 按照提示输入用户名和对应的密码可以,邮箱可以留空,用户名和密码必填
# 修改用户密码可以使用以下命令
$ python manage.py changepassword username

3.8 导出数据 导入数据

$ python manage.py dumpdata appname > appname.json
$ python manage.py loaddata appname.json

关于数据库操作,在后面的数据库课程中会详细介绍。

3.9 Django 项目环境终端

$ python manage.py shell

如果你安装了 bpython 或 ipython 会自动用它们的界面,这里推荐使用 ipython。

这个命令和直接运行 python 进入 shell 的区别是:**你可以在这个 shell 里面调用当前项目的 models.py 中的 API,对于操作数据,还有一些小测试非常方便。

当熟悉使用 shell 环境终端时,你会发现测试新的方法更加的快速,效率成倍提高。(就跟学会了 Vim 一样,并不是想引发圣战 /(ㄒoㄒ)/~~)

3.10 数据库命令行

$ python manage.py dbshell

Django 会自动进入在 settings.py 中设置的数据库,如果是 MySQL 或 postgreSQL ,会要求输入数据库用户密码。在这个终端可以执行数据库的 SQL 语句。如果你对 SQL 比较熟悉,可能会喜欢这种方式。

3.11 更多

直接在终端上输入以下命令,可以看到详细的列表,在忘记参数名时特别有用。

$ python manage.py

更详细的介绍,还是推荐官网的文档。给你列出三个版本,对应学习。

四、Hello World

通过一个例子来熟悉 Django 的基本使用

在用户根目录下,新建一个 django 目录,用于保存本课程的所有试验代码文件。我们可以执行以下命令进行目录创建:

$ $ mkdir django
$ $ cd django

在 django 目录中,我们创建第一个 Django 项目:

$ django/ $ django-admin startproject HelloWorld
$ django/ $ cd HelloWorld
$ HelloWorld/ $ ls
HelloWorld  manage.py

在 HelloWorld 项目目录中,使用 Django 的基本命令创建一个新的 app,名为 Hello:

$ HelloWorld/ $ python3 manage.py startapp Hello
$ HelloWorld/ $ ls
Hello  HelloWorld  manage.py

此时,我们项目的目录结构如下所示:

.
├── Hello
│   ├── admin.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── HelloWorld
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-34.pyc
│   │   └── settings.cpython-34.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

请编辑 Hello 目录中的 views.py 文件如下:

#coding: utf-8
from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    return HttpResponse(u'Hello World')

这样我们就编辑好了一个视图。由于我们新建立了一个 app,则需要在默认配置中添加这个 app。编辑 ./HelloWorld/settings.py,在 INSTALLED_APPS 这个数组中加入我们的 app:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Hello',
)

最后,我们为刚刚的页面配置 URL 路由即可完成,要编辑的文件为 ./HelloWorld/urls.py:

from django.conf.urls import include, url
from django.contrib import admin
from Hello import views as Hello_views

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', Hello_views.index)
]

大功告成,来运行我们的 Web 服务器:

$ python3 manage.py runserver 8080

打开浏览器可查看效果。

最后:

如果你想要系统学习Django,可以查看以下教程:

你也可以在线体验其他开源软件:实验楼软件库

如果你对任何开源软件感兴趣,欢迎在下面留言,也欢迎提交你熟悉的开源软件。提交方法:软件库使用方法