Oliver +

Django简明教程

Django简明教程


大家好,很荣幸给大家介绍Django.

Django是Python的一个重量级的Web库,能够较块地开发网站.

Django是与音乐艺人同名,并且有一次的电影也是讲Django的故事,Django的发音很憋足,中文直译是姜戈.

很多著名的网站就是用Django开发的,比如Instagram,Disqus等详细信息请参照官方文档Sit Using Django.

Django采用了MVC设计模式,即Model,View,Controller.

你可以访问Django的官方网站获取更多的信息.

由于Django是Python语言下的一个库,所以学习Django之前你必须要了解基本的Python语法,你可以参见廖大神的Python入门教程.

Django现在最新的版本是1.9,所以本教程是使用Python 2.7 + Django 1.9 .如果你使用Python 3.x也没关系,Django已完美支持Python 3.x .

安装django


Linux下的安装

安装django之前首先要有python运行环境.

pip命令安装

通过pip命令安装Django

pip install Django

这样就会自动安装最新版本的django.

下载源码安装

去官方网站https://www.djangoproject.com/download/下载django,下载到本地并解压.

然后输入命令:

cd Django-1.9
python setup.py install

这样就会安装好django.

查看django是否安装成功

在python运行环境下,输入:

import django
print django.VERSION

如果能够输出django的版本号,说明您已经安装成功了,congratulation.

我的第一个django项目


输入命令建立django的第一个项目mysite:

django-admin.py startproject mysite    # [mysite就是项目的名字]
cd mysite

注意以下操作默认在外部的mysite目录键入命令!

django给我们创建了很多文件,使用tree命令展开mysite.

tree
.
├── manage.py
└── mysite
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

1 directory, 5 files

manage.py是一个用python写的命令文件,可以用这个文件加上参数,对我们的项目进行操作.mysite文件夹包含一个init.py,这个是包的文件,可以不用管;setting.py文件是我们项目的配置文件,这里面可以对我们的项目进行一些配置,比如语系,数据库等;urls.py就是访问我们的web项目时的url处理文件,不同的url采用不同的处理,这也是说django是通过url来执行不同的函数,显示不同的效果,wsgi.py先暂时可以不用管.

django帮我们干了很多事情,我们可以不修改任何地方就可以在本地运行django项目.键入如下命令:

#这是采用默认的ip地址和端口号(127.0.0.1:8000)
python manage.py runserver
或
#自行指定ip地址和端口号
python manage.py runserver 0.0.0.0:50003

在浏览器中输入127.0.0.1:8000,可得到如下信息:

It worked!
Congratulations on your first Django-powered page.

Of course, you haven't actually done any work yet. Next, start your first app by running python manage.py startapp [app_label].

You're seeing this message because you have DEBUG = True in your Django settings file and you haven't configured any URLs. Get to work!

这就说明,我们自己已经运行了第一个django web程序,你可以看到,我们并没有做什么动作,所以说django为我们做了很多事.

停掉开发服务器,可在命令行输入Ctrl + C .

Hello World


很多时候学习一门语言,惯例的做法是先输出"Hello World",而我不想打破常规,让我们来看看"Hello World"是怎样在django中输出的.

等等,我们的项目里多了一个文件db.sqlite3,这是什么文件.这个多出来的文件,是因为mysite/setting.py配置了数据库是sqlite3数据库,配置如下:

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

以上信息是说,使用了sqlite3数据库,数据库的名字是os.path.join(BASE_DIR, 'db.sqlite3'),这个目录就是在mysite/下.

首先我们得先建一个app,一个网站就是由多个app组个而成.

python manage.py startapp blog

这样就新建了一个名叫blog的app应用,看看现在mysite有什么文件和文件夹.

.
├── blog
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── db.sqlite3
├── manage.py
└── mysite
    ├── __init__.py
    ├── __init__.pyc
    ├── settings.py
    ├── settings.pyc
    ├── urls.py
    ├── urls.py~
    ├── urls.pyc
    ├── wsgi.py
    └── wsgi.pyc

3 directories, 18 files

blog文件夹就是新建的app应用,里面的文件models.py是blog app的数据库操作,views.py是当要访问blog这个app的时候要怎样处理,其他文件暂时不会用到,用到时会逐一解释.

新建了一个blog app,在配置文件里的使用哪些app增加上blog即可.还记得配置文件是哪个文件吧,mysite/setting.py .

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #这是新加入的app应用,注意末尾的','号
    'blog', 
]

现在来看看mysite/urls.py文件.

from django.conf.urls import url
from django.contrib import admin

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

urlpatterns里面包含了一个url(r'^admin/', admin.site.urls),第一个参数是一个正则表达式匹配,就是匹配开头是admin/的url地址,第二个参数是当匹配到时采取的动作,也就是说当访问了127.0.0.1:8000/admin/时,处理函数是admin.site里的urls函数.好了,现在我们增加一个url,当访问127.0.0.1:8000/index/ 的时候,让它显示"Hello World".

from django.conf.urls import url
from django.contrib import admin
#导入模块
from blog.views import index

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index$', index), #当访问开头是index时,处理函数是blog.views.index
]

现在blog.views下的index方法还没有写,现在编辑blog/views.py,输入如下文字:

from django.http import HttpResponse

def index(request):
    return HttpResponse("<h1>Hello World</h1>")

这个index函数,会返回一个HttpResponse,内容是<h1>Hello World<h1>.

浏览器输入:

127.0.0.1:8000/index

你就会得到"Hello World".

持续更新中...


关于本教程


本教程可供任何人免费使用学习,但严禁用于商业用途.(纪念伟大的人Aaron swartz 1986-2013)由于作者水平所限,本教程难免有错误之处,还望大家海涵并指出,有人很问题请用邮箱联系我LBaoCode@Gmail.com .

<

博客

观点

关于我