被解放的姜戈01 初试天涯

被解放的姜戈01 初试天涯

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

Django是Python下的一款网络服务器框架。Python下有许多款不同的框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。虽然Django之于Python,达不到Rail之于Ruby的一统江湖的地位,但Django无疑也是Python在网络应用方面的一位主将。

向昆汀的致敬,“被解放的姜戈”

Django意外的和昆汀的电影重名。这大大提高了Django的知名度。另外利用电影,宣传了这个奇怪的词的发音。

下面是姜戈的初体验。 

安装Django

启动计算机中的Python,尝试载入Django模块。如果可以成功载入,那么说明Django已经安装好:

import django
print(django.VERSION)

如果Django还没有安装,可以在命令行,尝试使用pip安装:

sudo pip install django

或者使用easy_install:

sudo easy_install django

黑夜中,姜戈和镣铐说再见。

启动

使用下面的命令创建项目:

django-admin.py startproject mysite

在当前目录下,将生成mysite文件夹。其文件树结构如下:

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

1 directory, 5 files

进入mysite,启动服务器:

python manage.py runserver 8000

上面的8000为端口号。如果不说明,那么端口号默认为8000。

打开浏览器,访问http://127.0.0.1:8000,可以看到服务器已经在运行:

虽然有一个能跑的服务器,但什么内容都没有。

“赏金?猎人?” 姜戈满脸困惑。

第一个网页

在http协议中可以看到,网络服务器是“请求-回应”的工作模式。客户向URL发送请求,服务器根据请求,开动后厨,并最终为客人上菜。Django采用的MVC结构,即点单、厨房、储藏室分离。

我们需要一个指挥员,将URL对应分配给某个对象处理,这需要在mysite/mysite下的urls.py设定。Python会根据该程序,将URL请求分给某个厨师。

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

1 directory, 5 files

将urls.py修改为:

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns(‘‘,
    # Examples:
    # url(r‘^$‘, ‘mysite.views.home‘, name=‘home‘),
    # url(r‘^blog/‘, include(‘blog.urls‘)),

    url(r‘^admin/‘, include(admin.site.urls)),
    url(r‘^$‘, ‘mysite.views.first_page‘),
)

我们添加了最后一行。它将根目录的URL分配给一个对象进行处理,这个对象是mysite.views.first_page。

用以处理HTTP请求的这一对象还不存在,我们在mysite/mysite下创建views.py,并在其中定义first_page函数:

# -*- coding: utf-8 -*-

from django.http import HttpResponse

def first_page(request):
    return HttpResponse("<p>世界好</p>")

第一行说明字符编码为utf-8,为下面使用中文做准备。first_page函数的功能,是返回http回复,即这里的<p>世界好</p>。first_page有一个参数request,该参数包含有请求的具体信息,比如请求的类型等,这里并没有用到。

页面效果如下:

姜戈接过枪,一枪射出去。“天哪!” 德国人惊呆了。

增加app

一个网站可能有多个功能。我们可以在Django下,以app为单位,模块化的管理,而不是将所有的东西都丢到一个文件夹中。在mysite下,运行manange.py,创建新的app:

$python manage.py startapp west

这个新的app叫做west,用来处理西餐。

我们的根目录下,出现了一个新的叫做west的文件夹。

mysite/
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   ├── views.py
│   └── wsgi.py
└── west
    ├── admin.py
    ├── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py

我们还需要修改项目设置,说明我们要使用west。在mysite/setting.py中,在INSTALLED_APPS中,增加"west":

INSTALLED_APPS = (
    ‘django.contrib.admin‘,
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.messages‘,
    ‘django.contrib.staticfiles‘,
    ‘west‘,
)

可以看到,除了新增加的west,Django已经默认加载了一些功能性的app,比如用户验证、会话管理、显示静态文件等。我们将在以后讲解它们的用途。

姜戈看到曾经的工头们,眼中充满怒火。

增加APP页面

我们下面为APP增加首页。我们之前是在mysite/urls.py中设置的URL访问对象。依然采用类似的方式设置。

另一方面,为了去耦合,实现模块化,我们应该在west/urls.py中设置URL访问对象。具体如下:

首先,修改mysite/urls.py:

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns(‘‘,
    # Examples:
    # url(r‘^$‘, ‘mysite.views.home‘, name=‘home‘),
    # url(r‘^blog/‘, include(‘blog.urls‘)),

    url(r‘^admin/‘, include(admin.site.urls)),
    url(r‘^$‘, ‘mysite.views.first_page‘),
    url(r‘^west/‘, include(‘west.urls‘)),
)

注意新增加的最后一行。这里,我们提醒指挥员,对于west/的访问,要参考west/urls.py。

随后,我们创建west/urls.py,添加内容:

from django.conf.urls import patterns, include, url

urlpatterns = patterns(‘‘,
    url(r‘^$‘, ‘west.views.first_page‘),
)

将URL对应west下,views.py中的first_page函数。

最后,在west下,修改views.py为:

# -*- coding: utf-8 -*-

from django.http import HttpResponse

def first_page(request):
    return HttpResponse("<p>西餐</p>")

访问http://127.0.0.1:8000/west,查看效果。

“你们这些混蛋,我一个都不会放过!” 姜戈大吼。

总结

可以看到,Django的创建过程非常简单。但这只是初次尝试Django。为了创建一个完整功能的网站,还需要调用Django许多其它的功能。

姜戈的解放,才刚刚开始。

时间: 2024-10-13 08:15:19

被解放的姜戈01 初试天涯的相关文章

Django入门示例之被解放的姜戈——01 初试天涯(安装及启动)

一直以来,学习的过程总是缓慢的.要想提高效率,则要采取目标驱动法,边做边学.近期在学习python.. Django是Python下的一款网络服务器框架.Python下有许多款不同的框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django.虽然Django之于Python,达不到Rail之于Ruby的一统江湖的地位,但Django无疑也是Python在网络应用方面的一位主将. Django意外的和昆汀的电影重名.这大大提高了Django的知名度.另外利用电影,宣

被解放的姜戈02 庄园疑云

被解放的姜戈02 庄园疑云 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 上一回说到,姜戈的江湖初体验:如何架设服务器,如何回复http请求,如何创建App.这一回,我们要走入糖果庄园. 数据库是一所大庄园,藏着各种宝贝.一个没有数据库的网站,所能提供的功能会非常有限. 为了找到心爱的人,姜戈决定一探这神秘的糖果庄园. 连接数据库 Django为多种数据库后台提供了统一的调用API.根据需求不同,Django可以选择不同的数

Python 快速教程(Django01):初试天涯

Django是Python下的一款网络服务器框架.Python下有许多款不同的框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django.虽然Django之于Python,达不到Rail之于Ruby的一统江湖的地位,但Django无疑也是Python在网络应用方面的一位主将. 向昆汀的致敬,"被解放的姜戈" Django意外的和昆汀的电影重名.这大大提高了Django的知名度.另外利用电影,宣传了这个奇怪的词的发音. 下面是姜戈的初体验. 安装Djang

Django入门示例之被解放的姜戈——03 所谓伊人(模板及模板处理)

在之前的程序中,我们直接生成一个字符串,作为http回复,返回给客户端.这一过程中使用了django.http.HttpResponse(). 在这样的一种回复生成过程中,我们实际上将数据和视图的格式混合了到上面的字符串中.看似方便,却为我们的管理带来困难.想像一个成熟的网站,其显示格式会有许多重复的地方.如果可以把数据和视图格式分离,就可以重复使用同一视图格式了. Django中自带的模板系统,可以将视图格式分离出来,作为模板使用.这样,不但视图可以容易修改,程序也会显得美观大方. 1.模板初

Django入门示例之被解放的姜戈——02 庄园疑云(数据库及模型)

上一章说到,姜戈的江湖初体验:如何架设服务器,如何回复http请求,如何创建App.这一回,我们要走入糖果庄园. 为了找到心爱的人,姜戈决定一探这神秘的糖果庄园. 1.连接数据库 Django为多种数据库后台提供了统一的调用API.根据需求不同,Django可以选择不同的数据库后台.MySQL算是最常用的数据库.我们这里将Django和MySQL连接. 在Linux终端下启动mysql: $mysql -u root -p 在MySQL中创立Django项目的数据库: mysql> CREATE

Python快速教程

Python快速教程 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 怎么能快速地掌握Python?这是和朋友闲聊时谈起的问题. Python包含的内容很多,加上各种标准库.拓展库,乱花渐欲迷人眼.我一直希望写一个快速的.容易上手的Python教程,而且言语简洁,循序渐进,让没有背景的读者也可以从基础开始学习.我将在每一篇中专注于一个小的概念,希望在闲暇时可以很快读完. 小提醒 教程将专注于Python基础,语法基于Pytho

历年奥斯卡获奖影片(1927—2014)

1939年出品的"Gone with the Wind 乱世佳人 ",好精彩好经典啊!历史的评价一致公认,这部影片是"好莱坞第一巨片".反映"宏大战争中永恒的爱情",是一幅反映社会政治.经济.道德诸多方面的巨大而深刻变化的历史画卷.这部依据玛格丽特·米切尔的畅销小说<飘>改编而成的电影,使费雯丽轰动了全美国和整个大洋彼岸."郝思嘉风暴"经久不息.自1939后的几十年,看过这部影片的观众已数以亿计.影片当之无愧地获得

历届奥斯卡获奖影片(1971-2014年)

2014年(86届) 获奖:<为奴十二年>/12 Years a Slave 提名: <达拉斯买家俱乐部> /Dallas Buyers Club <华尔街之狼> /The Wolf of Wall Street <地心引力> /Gravity <内布拉斯加> /Nebraska <菲利普船长> /Captain Phillips <她>/ Her <美国骗局>/ American Hustle <菲洛梅

利用Django构建web应用及其部署

注:很久之前就有了学习Django的想法,最近终于有机会做了一次尝试.由于Django的详细教程很多,我在这里就不再详述了,只是将整个开发流程以及自己在学习Django中的一些思考记录在此. System:CentOS Linux release 7.2.1511 (Core) Django: 1.10 Python: 2.7.5 推荐两个非常好的教程: The Django Book(中文版):我自己一开始是参考这个教程学习的,非常有意思的是这个教程中有大量的评论,几乎每段都有,从10年开始一