第四章 Django 基础

来源:互联网 发布:淘宝店铺人群消费层级 编辑:程序博客网 时间:2024/06/05 05:55

      让我们开始使用Django !在这一章,我们将会给你的概述如何开始使用Django。你会建立一个新项目,一个新的web应用程序。通过本章,你将有一个简单的Django-power网页运行!

测试配置

      让我们首先检查您的Python和Django是否已经安装正确,是否和本教程的版本相符。要做到这一点,打开一个新的终端实例并发出以下命令。

$ python --version2.7.5

      启动你的Python解释器并执行字符串中的代码增加-c部分进行转换。你可以随着打印输出结果看到你的Python安装版本。如果显示的是除了2.7.5的版本,你需要回到3.2章节并验证您已经完成了适用于您的操作系统所有相关的步骤。
检查你的Python安装后,通过发出以下命令来检查你的Django安装。

$ python -c "import django; print(django.get_version())"1.7

      再次执行的命令字符串中的代码增加-c部分进行转换。Django的导入后,你应该看到1.7的显示在下方。如果你看到不同的数字或显示出Python ImportError,回到3.2章节并咨询Django文档安装Django的更多信息。如果你发现你有一个不同版本的Django,有可能你会在某些时间遇到一些问题。这是绝对值得确保你的Django1.7安装。

创建你的Django项目

在你的code目录下创建一个新的Django项目(例如<workspace>目录),输入以下命令:

$ django-admin.py startproject tango_with_django_project

注释
在Windows上您可能必须使用完整路径的django-admin.py脚本。如python c:\python27\scripts\django-admin.py startproject tango_with_django_project 在 StackOverflow的建议。

      这个命令会调用django-admin.py脚本,系统会为你配置一个名为tango_with_django_project的新Django项目。通常情况下,我们追加_project到我们的Django项目目录结束,所以我们确切地知道他们包含 - 但命名约定是完全取决于你。
      你会注意到在你的工作区是一个目录设置为您的新项目的名称, tango_with_django_project。在这个新创建的目录中,您应该会看到两个项目:

  • 另一个具有相同名称的目录作为您的项目,tango_with_django_project
  • 一个名为manage.py的Python脚本

      对于本教程的目的,我们称这种嵌套目录中的项目配置目录。在这目录下,你会发现4个Python脚本。我们稍后将详细讨论这个脚本,但是现在您应该看到:
  • __init__.py,一个空白的Python脚本的存在表示Python解释器的目录是一个Python包;
  • settings.py,用来存储你的Django项目的所有配置;
  • urls.py,Python脚本为您的项目存储URL模式;
  • wsgi.py,Python脚本用来帮助运行您的开发服务器和你的项目部署到生产环境中。

注释
从1.4版本开始,创建新的Django项目都配置在目录中。有两个目录具有相同的名称看起来很有点古怪,但这种变化是为了从单独的应用程序分离出来,与项目相关的组件。

      在项目目录中,您将看到名为manage.py的文件。我们将调用这个脚本一次又一次我们开发我们的项目,因为它为你提供了一系列命令您可以运行维护您的Django项目。或例如,manage.py允许您运行内置Django开发服务器测试你的工作和运行数据库命令。您将在整个开发周期使用这个脚本。

注释
看到Django文档以了解更多的细节管理和管理脚本。

你现在可以尝试使用manage.py脚本,发出以下命令:

$ python manage.py runserver

执行这个命令将指示Django启动它的轻量级开发服务器。您应该看到您的终端中的输出类似于如下所示的示例:

$ python manage.py runserverSystem 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.October 01, 2014 - 19:49:05Django version 1.7c2, using settings 'tango_with_django_project.settings'Starting development server at http://127.0.0.1:8000/Quit the server with CONTROL-C.
$ python manage.py migrateOperations to perform:  Apply all migrations: admin, contenttypes, auth, sessionsRunning migrations:  Applying contenttypes.0001_initial... OK  Applying auth.0001_initial... OK  Applying admin.0001_initial... OK  Applying sessions.0001_initial... OK

      #TODO(leifos):添加迁移命令描述:从django教程:迁移命令看着INSTALLED_APPS设置并创建必要的数据库表根据数据库设置为mysite /setting.py文件和数据库迁移随应用程序(稍后我们将讨论这些)。你会看到每个适用迁移的消息。如果你感兴趣,运行命令行客户端对数据库和dt型(PostgreSQL),显示表;(MySQL),或.sechma(SQLite)显示表创建Django。
打开你熟悉的浏览器中并输入URL http://127.0.0.1:8000/ 。你会看到和图1相似的界面。
这里写图片描述
Figure 1: A screenshot of the initial Django page you will see when running the development server for the first time.
      你可以随时在终端窗口输入CRTL+C来停止开发服务器。如果你想在不同的端口上运行开发服务器,或者允许用户从其他机器访问它,你可以通过提供可选的参数。考虑下面的命令:

$ python manage.py runserver <your_machines_ip_address>:5555

      执行这个命令将迫使开发服务器响应传入的请求TCP端口5555。你需要用你的计算机的IP地址替换<your_machines_ip_address>。当设置端口时,你是不可能够使用TCP端口80,因为这是保留给传统的HTTP流量。此外,1024以下的任一端口被您的操作系统认为是特权。
      虽然你不会使用轻量级开发服务器部署应用程序,有时它是好的,能够在你同事的计算机上演示你的应用程序。运行服务器和你的机器的IP地址将使他人输入http://<your_machines_ip_address>:<port>/并查看你的web应用程序。当然,这将取决于您的网络配置。可能有代理服务器或防火墙的方式在这工作之前需要配置。请与网络管理员使用如果你不能查看远程开发服务器。

注释
django-admin.py和manage.py脚本非常有用,为你节约很多时间。django-admin.py允许您启动新项目和应用程序,以及其他命令。在你的项目目录中,manage.py 允许您在范围内的项目中执行管理任务。简单地执行相关脚本的名字不带任何参数来看看你能做什么。官方的Django文档提供了一个详细的列表和每个可能的解释脚本的命令。

如果你正在使用版本控制,现在可能是一个很好的时间来提交你对你的工作空间的变化。如果你不记得这样的命令和步骤,你可以查看Git速成班。

创建Django应用

      Django项目是一个配置的集合和应用程序组合在一起形成了一个给定的web应用程序或网站。其中一个是关于使用这种方法的结果是促进良好的软件工程实践。通过开发一系列小的应用程序,我们的想法是,理论上你可以将现有的应用程序引用不同的Django项目和并将它以最小的努力工作。如果已经存在,为什么重新发明轮子?
      Django应用程序的存在是为了执行特定任务。您需要创建负责为你的网站提供的特定应用程序特定类型的功能。例如,我们可以想象,一个项目可能由多个应用程序组成,包括轮询程序,注册应用程序,和具体内容相关的应用程序。在另一个项目,我们可能希望重用的轮询和注册应用程序,并使用它们分派不同的内容。有许多Django应用程序可以下载并使用在您的项目。自从我们开始,我们将一步一步学习如何创建你自己的应用程序。
我们开始创建一个新的名为Rango的应用程序。在你的Django项目目录中( <workspace>/tango_with_django_project),运行以下命令:

$ python manage.py startapp rango

      在你的项目根目录下使用命令startapp创建一个新的目录。不出所料的,这个目录叫rango,在这个目录下包含以下5个Python脚本。

  • 另一个__init__.py,如前所述服务于同样的目的;
  • models.py,一个地方来存储应用程序的数据模型——您指定的实体和数据之间的关系;
  • tests.py,您可以在其中存储一系列函数来测试您的应用程序的代码;
  • views.py,您可以在其中存储一系列的函数可以接受一个客户的请求,并返回响应
  • admin.py,你可以注册你的模型,这样你就可以受益于一些Django机制并为你创建一个管理接口给你(#TODO(leifos)添加链接管理章节)。

      views.pymodels.py是将用于任何给定的应用程序的两个文件,并形成Django在使用的主体建筑设计模式的一部分(Model-View-Template模式)。你可以查看官方Django文档,看看模型,视图和模板相互之间关系的详细细节。
      在可以开始创建自己的模型和视图之前,你必须先告诉Django项目有关新应用程序的存在。完成这个,你需要修改包含在你的项目配置目录中的setting.py文件。打开文件并找到INSTALLED_APPS元组。在元组的结尾处添加rango应用,如下面例子所示。

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

验证Django的启动你的新的应用程序并再次运行开发服务器。如果可以启动该服务器没有错误,你的应用程序被启动,你将准备进行下一个步骤。

创建View

      随着我们的Rango应用程序创建,现在开始创建一个简单的View。对第一个View,我们只是发送一些简单的文本到客户端,我们不会关心自己使用模型或模板。
在你喜欢的IDE中,打开views.py文件,位于新创建的rango应用程序目录中。删除注释#Create your views here。所以现在你有一个空白文件。
现在你可以添加以下代码。

from django.http import HttpResponsedef index(request):    return HttpResponse("Rango says hey there world!")

分解三行代码,我们遵守下列关于创建这个简单的观点。

  • 首先我们从django.http模块中导入HttpResponse对象
  • 每个视图中存在一些列独立函数在views.py文件中。在这个例子中,我们值创建了一个视图-名为index
  • 每一个视图都需要至少一个参数- HttpResquest对象,也存在在django.http模块中。会议决定了这名为request,但无论你想,如果你愿意的话,你可以重命名这。
  • 每个视图必须返回一个HttpResponse对象。一个简单的HttpResponse对象接受一个字符串参数表示我们要发送给请求的客户端查看该页面的内容。

与视图创建的,你的方式仅允许用户访问它的一部分。要让用户查看你的view,你必须把URL映射到视图。

映射URLs

      在rango应用程序目录下,我们需要创建一个新的文件叫urls.py。文件的内容将允许您为应用程序url(http://www.tangowithdjango.com/rango/)映射到指定views。看看一个简单的urls.py文件如下。

from django.conf.urls import patterns, urlfrom rango import viewsurlpatterns = patterns('',        url(r'^$', views.index, name='index'))

      这段代码导入相关Django机制,我们使用它来创建URL映射。从rango中导入views模块还为我们提供了访问我们以前实现的简单的视图,使我们能够引用的URL映射,我们将创建视图。
      创建映射,我们使用一个元组。为了Django连接到映射,这个元组必须叫urlpatterns。这个urlpatterns元组包含一些名为django.conf.urls.url()的函数,每个调用处理一个特定映射。在上面的代码示例中,我们只使用url()一次,所以我们因此定义只有一个url映射。我们提供django.conf.urls.url()函数的第一个参数是正则表达式^$,匹配一个空字符串。通过匹配此模式的用户提供的任何URL意味着视图views.index()会被Django的调用。该视图将被传递一个HttpRequest对象作为参数,包含有关用户的请求到服务器的信息。我们也使用可选参数的url()函数,name使用字符串index相关联的值。

注释
name是django.conf.urls.url()函数的可选参数。这是Django提供,让你可以区分不同的映射。完全有可能是两个单独的URL映射表达式可能会调用相同的view。name可以让你区分它们 - 这是反向URL匹配实用。看看Django官方文档关于这个主题的更多信息。

      你可能已经看到你的项目配置目录中的urls.py文件已经存在。为什么创建另一个呢?从技术上讲,你可以把你的项目的应用程序的所有url放在这个文件中。然而,这被认为是不好的做法,因为它会增加你的个人应用程序的耦合。每个应用程序拥有单独urls.py文件,可以为单个应用程序的设置URL。最小的耦合,你可以把这些文件加入到你项目的主urls.py文件中。
      这意味着我们需要在我们的tango_with_django_project项目中配置urls.py和将我们Rango应用程序连接到我们的主要项目。
我们该怎么做呢?相当简单。打开位于您的项目配置目录内的urls.py文件。作为您的工作区目录的相对路径,这将是该文件<workspace>/tango_with_django_project/tango_with_django_project/urls.py。更新urlpatterns元组如下例所示。

urlpatterns = patterns('',    # Examples:    # url(r'^$', 'tango_with_django_project_17.views.home', name='home'),    # url(r'^blog/', include('blog.urls')),    url(r'^admin/', include(admin.site.urls)),    url(r'^rango/', include('rango.urls')), # ADD THIS NEW TUPLE!)

      添加映射查找url字符串相匹配的模式^rango/。当一个匹配的url字符串的传递并由rango.urls处理(我们已经配置)。这是通过django.conf.urls内的include()函数的帮助完成。认为这是一个链处理器URL字符串 - 如图2。在这链中,域被剥夺并将rango/字符串的剩余部分传递到tango_with_django项目,在这里找到了匹配,并删掉rango/并将空字符串被传递到rango应用程序。Rango现在尝试匹配空字符串,如果确实如此,再调度我们所创建的index()视图。
重启Django开发服务并输入http://127.0.0.1:8000/rango。如果成功,你会看到文本Rango says hello world!。会像图3所示。
图2
Figure 2: An illustration of a URL, showing how the different parts of the URL are the responsibility of different url.py files.
图3
Figure 3: A screenshot of Google Chrome displaying our first Django-powered webpage. Hello, Rango!
      在每个应用程序中,您将创建一些URL来查看映射。这个初始映射相当简单。随着我们的进展,我们将创造更复杂的映射,使用允许的URL来进行参数设置。
在Django中很好理解如何处理URLs非常重要。如果你仍然有些困惑或者想了解更多看看Django官方文档关于URLs的深入介绍和例子。

注释
这些URL模型使用正则表达式去执行匹配。学会如何在Python中使用正则表达式可以让你自己受益匪浅。官方Python文档中包含正则表达式的一个有用的指南,而regexcheatsheet.com提供了一个简要的概括正则表达式。

基本工作流程

你在这一章就可以学会了简洁地概括为一个操作的列表。在这里,我们提供这些名单你已经执行两个不同的任务。您可以使用这个部分的快速参考如果你需要提醒自己特定的行为。

创建新的Django项目

创建项目,python django-admin.py startproject <name>,这里的<name>代表你想创建新项目的名字。

创建新的Django应用

  1. 创建一个新的应用,$ python manage.py startapp <appname><appname>表示你新创建应用的名字;
  2. 在你项目setting.py文件中将你新建Django应用添加到INSTALLED_APPS元组中;
  3. 在你的项目urls.py文件中,添加一个映射到应用程序;
  4. 在你的应用程序的目录中,添加一个urls.py文件直接输入的URL字符串到视图;
  5. 在应用程序的views.py,创建所需的视图确保他们返回HttpResponse对象。

练习

      恭喜!你已经启动并运行Rango。这意味着你可以开始Django相关工作了。创建views和映射URLs到views是对更复杂开发和实用的web应用程序的第一步。现在尝试下面的练习,以加强你学到的东西。

  • 修改程序,并确保你遵循的url映射到视图;
  • 新创建一个叫`about`的视图,并返回`Rango says here is the about page`。
  • 将这个视图映射到`/rango/about/`。这一步,你只需要编辑rango应用程序中的`urls.py`文件;
  • 修改`index`视图中的`HttpResponse`包含一个链接返回到有关页面;
  • 在`about`视图的`HttpResponse`包括一个链接返回主页;
  • 如果你没有完成,最好去阅读Django文档来帮助你完成任务。

提示

如果你在努力完成练习,希望以下提示为您提供一些灵感帮助你如何完成。

  • 你的index视图应该更新到包含about视图的链接。始终保持简洁-如Rango says: Hello world!<br/> <a href='/rango/about'>About</a>可以满足。我们会再去改善这些页面的展示。
  • 这个匹配about/的正则表达式是r'^about/'-这样你的URL模式就很方便。
  • HTML链接索引页面<a href="/rango/">Index</a>。使用相同的结构的链接上面所示的关于页面的链接。


原文:http://www.tangowithdjango.com/book17/chapters/setup.html

0 0
原创粉丝点击