Django学习笔记

一直想学个服务器开发语言以便自己独立开发API服务器,之前想学PHP不过看了点不怎么感兴趣。加上小伙伴们都推荐Django,今天就尝试看看。

Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架。使用 Django,我们在几分钟之内就可以创建高品质、易维护、数据库驱动的应用程序。
Django 框架的核心组件有:

  • 用于创建模型的对象关系映射
  • 为最终用户设计的完美管理界面
  • 一流的 URL 设计
  • 设计者友好的模板语言
  • 缓存系统

    http://www.oschina.net/p/django/

安装

安装PIP

1
2
3
$ sudo apt-get update
$ sudo apt-get install python-pip python-dev build-essential
$ sudo pip install --upgrade pip

安装Django

1
$ pip install Django

开始第一个项目

创建Django项目只需要一条命令,如创建一个apiserver项目

1
$ django-admin.py startproject apiserver

Django在当前目录下创建一个apiserver文件夹,其目录结构如下

1
2
3
4
5
6
7
└── apiserver
├── apiserver
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py
  • init.py:Python特性,可以是空文件,表明这个文件夹是一个可以导入的包。
  • settings.py:配置文件,本文主要修改数据库信息、模板目录、加载模块的信息。
  • url.py:URL配置文件,指定函数与URL的映射关系。
  • wsgi.py:本文中不会使用,nginx/apache+wsgi在生产环境中运行Django时使用。

创建完成后可以通过命令python manage.py runserver,由于我们是创建在云服务器,所以还需要开放外网访问才能访问到该页面,则用下面的命令。

1
$ python manage.py runserver 0.0.0.0:8080

若看到一下提示则表示需要用python manage.py migrate命令使设置生效。

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

设置生效后再次运行runserver命令。访问http://服务器IP:8000可以看到安装成功提示。

连接Mysql数据库

服务器上配置Mysql数据教程参考How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu
编辑配置文件/apiserver/apiserver/settings.py,找到DATA-BASES的配置,并修改为Mysql。

1
2
3
4
5
6
7
8
9
10
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #设置为mysql数据库
'NAME': 'Django', #mysql数据库名
'USER': 'root', #mysql用户名,留空则默认为当前linux用户名
'PASSWORD': 'rootPassword', #mysql密码
'HOST': '', #留空默认为localhost
'PORT': '', #留空默认为3306端口
}
}

Django(Python)操作MySQL依赖第三方包,所以要先安装MySQL for Python。

1
2
$ sudo apt-get install libmysqld-dev
$ sudo pip install MySQL-python

安装完成后再次运行Migerate操作。如果相关模块安装正确,则可以看到以下的表结构。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SHOW TABLES;
+----------------------------+
| Tables_in_Django |
+----------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
+----------------------------+

注:

  1. Migerate之前需要用Mysql命令创建该数据库。
  2. settings.py中包含中文注视的话需要在开头添加# encoding: utf-8

URL路由表和View视图

现在增加一条指向首页的路由表,编辑路由表配置文件apiserver/apiserver/urls.py,URL地址使用正则表达式设置。

1
2
3
4
5
6
7
8
9
from django.conf.urls import include, url
from django.contrib import admin
from . import views #引入views
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^$', views.home), #增加一条URL规则,r'^$'表示首页(/)
]

然后在apiserver/apiserver/目录下新建views.py文件夹来管理视图。内容为

1
2
3
from django.http import HttpResponse
def home(request):
return HttpResponse('hello, world')

不能忘记在路由表内引入views.py文件。

配置完成后再次运行并访问首页,即可看到hello, world