Django Hello World

Django 的特点

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

强大的数据库功能

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

自带的强大后台功能

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

优雅的链接路由

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

Model(模板)系统

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

缓存系统

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

国际化

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

Hello World

关于 Django 的环境搭建我们将在下一节中详细介绍,下面部分为初学 Django 的初体验,让读者感受 Django 搭建 Web 服务端的快捷。

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

1
2
$ shiyanlou:~/ $ mkdir django
$ shiyanlou:~/ $ cd django

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

1
2
3
4
$ shiyanlou:django/ $ django-admin startproject HelloWorld
$ shiyanlou:django/ $ cd HelloWorld
$ shiyanlou:HelloWorld/ $ ls
HelloWorld manage.py

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

1
2
3
$ shiyanlou:HelloWorld/ $ python3 manage.py startapp Hello
$ shiyanlou:HelloWorld/ $ ls
Hello HelloWorld manage.py

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.
├── 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 文件如下:

1
2
3
4
5
6
#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:

1
2
3
4
5
6
7
8
9
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:

1
2
3
4
5
6
7
8
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 服务器:

1
$ python3 manage.py runserver 8080

看到服务器搭建成功的反馈:

1
2
3
4
5
6
7
8
9
10
11
Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

March 03, 2017 - 08:23:54
Django version 1.8.13, using settings 'HelloWorld.settings'
Starting development server at http://127.0.0.1:8080/
Quit the server with CONTROL-C.

打开实验楼环境中的 Firefox 浏览器测试一下。如果成功,则结果如下图:

课程作业

在 Hello 这个 app 中,在 views.py 增加一个界面,返回字符串 Hello Django,当客户端启动后,请在 http://127.0.0.1:8080/django 显示 Hello Django。

  • views.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #coding: utf-8
    from django.shortcuts import render
    from django.http import HttpResponse

    # Create your views here.
    def index(request):
    return HttpResponse(u'Hello World')

    def django(requset):
    return HttpResponse(u'Hello Django')
  • urls.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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),
    url(r'^django/', Hello_views.django)
    ]