提交 53a29e6c 编写于 作者: W wizardforcel

fix3

上级 3db57100
<!--
来源:http://django-chinese-docs.readthedocs.org/
-->
# 初探 Django #
来源:[django-chinese-docs.readthedocs.org](http://django-chinese-docs.readthedocs.org/)
# Django 初探 #
由于Django是在一个快节奏的新闻编辑室环境下开发出来的,因此它被设计成让普通的网站开发工作简单而快 捷。以下简单介绍了如何用 Django 编写一个数据库驱动的Web应用程序。
......@@ -242,4 +236,10 @@ Django 有一个模板搜索路径板,它让你尽可能的减少冗余而重
一个 *缓存框架* 可以与 memcached 或其他后端缓存集成。
一个 *聚合框架* 可以让创建 RSS 和 Atom 的 feeds 同写一个小小的 Python 类一样容易。
更性感的自动创建管理站点功能 – 本文仅仅触及了点皮毛。
显然,下一步你应该 下载 Django,阅读 [入门教程](/intro/tutorial01) 并且加入 *社区*. 感谢您的关注!
\ No newline at end of file
显然,下一步你应该 下载 Django,阅读 [入门教程](/intro/tutorial01) 并且加入 *社区*. 感谢您的关注!
> 译者:[Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html),原文:[Overview](https://docs.djangoproject.com/en/1.8/intro/overview/)。
>
> 本文以 [CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 协议发布,转载请保留作者署名和文章出处。
>
> [Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html)人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。
<!--
来源:http://django-chinese-docs.readthedocs.org/
-->
# 快速安装指南 #
来源:[django-chinese-docs.readthedocs.org](http://django-chinese-docs.readthedocs.org/)
在你开始使用 Django 之前,你需要先安装它。我们有一个 *完整安装指南* 它涵盖了所有的安装步骤和可能遇到的问题;本指南将会给你一个最简单、简洁的安装指引。
## 安装 Python ##
......@@ -15,15 +9,15 @@
在 http://www.python.org 获取 Python 。如果你使用 Linux 或者 Mac OS X,那很可能已经安装了 Python 。
> **在 Jython 使用 Django**
>
>
> 如果你使用 *Jython* (一个在 Java 平台上实现的 Python ),你需要遵循一些额外的步骤。查看 *在 Jyton 上运行 Python* 获取详细信息。
>
>
在你的终端命令行(shell)下输入 python 来验证是否已经安装 Python ; 你将看到如下类似的提示信息:
```
Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48)
[GCC 4.4.5] on linux2
Python 3.3.3 (default, Nov 26 2013, 13:33:18)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
```
......@@ -45,7 +39,7 @@ Type "help", "copyright", "credits" or "license" for more information.
+ *安装最新的开发版本* 。这对于那些想要尝试最新最棒的特性而不担心运行崭新代码的用户来说是最好的。
> **总是参考你所使用的对应版本的 Django 文档!**
>
>
> 如果采用了前两种方式进行安装,你需要注意在文档中标明**在开发版中新增**的标记。这个标记表明这个特性仅适用开发版的 Django ,而他们可能不在官方版本发布。
## 验证安装 ##
......@@ -55,11 +49,17 @@ Type "help", "copyright", "credits" or "license" for more information.
```
>>> import django
>>> print(django.get_version())
1.5
1.8
```
你可能已安装了其他版本的 Django 。
## 安装完成! ##
安装完成 – 现在你可以 *学习入门教程*.
\ No newline at end of file
安装完成 – 现在你可以 *学习入门教程*.
> 译者:[Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html),原文:[Installation](https://docs.djangoproject.com/en/1.8/intro/install/)。
>
> 本文以 [CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 协议发布,转载请保留作者署名和文章出处。
>
> [Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html)人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。
<!--
来源:http://django-chinese-docs.readthedocs.org/
-->
# 编写你的第一个 Django 程序 第1部分 #
让我们通过例子来学习。
......@@ -24,7 +20,7 @@ python -c "import django; print(django.get_version())"
请参考 如何安装 Django 中的意见先删除旧版本的 Django 再安装一个新的。
> 在哪里可以获得帮助:
>
>
> 如果您在学习本教程中遇到问题,请在 django-users 上发贴或者在 #django on irc.freenode.net 上与其他可能会帮助您的 Django 用户交流。
## 创建一个项目 ##
......@@ -40,11 +36,11 @@ django-admin.py startproject mysite
这将在当前目录创建一个 mysite 目录。如果失败了,请查看 Problems running django-admin.py.
> Note
>
>
> 你需要避免使用 python 保留字或 Django 组件名作为项目的名称。尤其是你应该避免使用的命名如: django (与 Django 本身会冲突) 或者 test (与 Python 内置的包名会冲突).
> 这段代码应该放在哪里?
>
>
> 如果你有一般 PHP 的编程背景(未使用流行的框架),可能会将你的代码放在 Web 服务器的文档根目录下(例如:``/var/www``)。而在 Django 中,你不必这么做。将任何 Python 代码放在你的 Web 服务器文档根目录不会是一个好主意,因为这可能会增加人们通过 Web 方式查看到你的代码的风险。这不利于安全。
将你的代码放在你的文档根目录 以外 的某些目录, 例如 /home/mycode 。
......@@ -62,7 +58,7 @@ mysite/
```
> 和你看到的不一样?
>
>
> 默认的项目布局最近刚刚改变过。如果你看到的是一个“扁平”结构的目录布局(没有内层 mysite/ 目录),你很可能正在使用一个和本教程版本不一致的 Django 版本。你需要切换到对应的旧版教程或者使用较新的 Django 版本。
这些文件是:
......@@ -80,12 +76,12 @@ mysite/
让我们来验证是否工作。从外层 mysite 目录切换进去,若准备好了就运行命令 ``python manage.py runserver``。你将会看到命令行输出如下内容:
```
Validating models...
Performing system checks...
0 errors found
December 02, 2013 - 15:50:53
Django version 1.5, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
May 13, 2015 - 15:50:53
Django version 1.8, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
```
......@@ -96,17 +92,17 @@ Quit the server with CONTROL-C.
现在服务器正在运行中,请在你的 Web 浏览器中访问 http://127.0.0.1:8000/ 。 你会看到一个令人愉悦的,柔和的淡蓝色 “Welcome to Django” 页面。它工作正常!
> 更改端口号
>
>
> 默认情况下,runserver 命令启动的开发服务器只监听本地 IP 的 8000 端口。
>
>
> 如果你想改变服务器的端口,把它作为一个命令行参数传递即可。例如以下命令启动的服务器将监听 8080 端口:
>
>
```
python manage.py runserver 8080
```
>
>
> 如果你想改变服务器 IP ,把它和端口号一起传递即可。因此,要监听所有公共 IP 地址(如果你想在其他电脑上炫耀你的工作),请使用:
>
>
```
python manage.py runserver 0.0.0.0:8000
```
......@@ -128,7 +124,7 @@ python manage.py runserver 0.0.0.0:8000
如果你是新建数据库,我们建议只使用 SQLite ,将 ENGINE 改为 'django.db.backends.sqlite3' 并且将 NAME 设置为你想存放数据库的地方。 SQLite 是内置在 Python 中的,因此你不需要安装任何东西来支持你的数据库。
> Note
>
>
> 如果你使用 PostgreSQL 或者 MySQL,确保你已经创建了一个数据库。还是通过你的数据库交互接口中的 “CREATE DATABASE database_name;” 命令做到这一点的。
> 如果你使用 SQLite ,你不需要事先创建任何东西 - 在需要的时候,将会自动创建数据库文件。
当你编辑 settings.py 时,将 TIME_ZONE 修改为你所在的时区。默认值是美国中央时区(芝加哥)。
......@@ -157,7 +153,7 @@ syncdb 命令参照 INSTALLED_APPS 设置,并在你的 settings.py 文件所
如果你感兴趣,可以在你的数据库命令行下输入:``dt`` (PostgreSQL), SHOW TABLES; (MySQL), 或 .schema (SQLite) 来列出 Django 所创建的表。
> 极简主义者
>
>
> 就像我们上面所说的,一般情况下以上应用都默认包含在内,但不是每个人都需要它们。如果不需要某些或全部应用,在运行 syncdb 命令前可从 INSTALLED_APPS 内随意注释或删除相应的行。syncdb 命令只会为 INSTALLED_APPS 内的应用创建表。
## 创建模型 ##
......@@ -167,7 +163,7 @@ syncdb 命令参照 INSTALLED_APPS 设置,并在你的 settings.py 文件所
你通过 Djaong 编写的每个应用都是由 Python 包组成的,这些包存放在你的 Python path 中并且遵循一定的命名规范。 Django 提供了个实用工具可以自动生成一个应用的基本目录架构,因此你可以专注于编写代码而不是去创建目录。
> 项目 ( Projects ) vs. 应用 ( apps )
>
>
> 项目与应用之间有什么不同之处?应用是一个提供功能的 Web 应用 – 例如:一个博客系统、一个公共记录的数据库或者一个简单的投票系统。 项目是针对一个特定的 Web 网站相关的配置和其应用的组合。一个项目可以包含多个应用。一个应用可以在多个项目中使用。
你的应用可以存放在 Python path 中的任何位置。在本教材中,我们将通过你的 manage.py 文件创建我们的投票应用,以便它可以作为顶层模块导入,而不是作为 mysite 的子模块。
......@@ -193,7 +189,7 @@ polls/
在 Django 中编写一个有数据库支持的 Web 应用的第一步就是定义你的模型 – 从本质上讲就是数据库设计及其附加的元数据。
> 哲理
>
>
> 模型是有关你数据的唯一且明确的数据源。它包含了你所要存储的数据的基本字段和行为。 Django 遵循 DRY 原则 。目标是为了只在一个地方定义你的数据模型就可从中自动获取数据。
在这简单的投票应用中,我们将创建两个模型: Poll 和 Choice``。``Poll 有问题和发布日期两个字段。``Choice`` 有两个字段: 选项 ( choice ) 的文本内容和投票数。每一个 Choice 都与一个 Poll 关联。
......@@ -236,7 +232,7 @@ class Choice(models.Model):
但首先,我们需要告诉我们的项目已经安装了 polls 应用。
> 哲理
>
>
> Django 应用是“可插拔的”:你可以在多个项目使用一个应用,你还可以分发应用,因为它们没有被捆绑到一个给定的 Django 安装环境中。
再次编辑 settings.py 文件,在 INSTALLED_APPS 设置中加入 'polls' 字符。因此结果如下所示:
......@@ -322,9 +318,9 @@ python manage.py shell
我们当前使用的环境不同于简单的输入 “python” 进入的 shell 环境,因为 manage.py 设置了 DJANGO_SETTINGS_MODULE 环境变量,该变量给定了 Django 需要导入的 settings.py 文件所在路径。
> 忽略 manage.py
>
>
> 若你不想使用 manage.py ,也是没有问题的。 仅需要将 DJANGO_SETTINGS_MODULE 环境变量值设为 mysite.settings 并在与 manage.py 文件所在同一目录下运行 python ( 或确保目录在 Python path 下,那 import mysite 就可以了 )。
>
>
> 想了解更多的信息,请参考 django-admin.py 文档 。
一旦你进入了 shell,就可通过 database API 来浏览数据::
......@@ -384,11 +380,11 @@ class Choice(models.Model):
给你的模型添加 __unicode__() 方法是很重要的, 不仅是让你在命令行下有明确提示,而且在 Django 自动生成的管理界面中也会使用到对象的呈现。
> 为什么是 __unicode__() 而不是 __str__()?
>
>
> 如果你熟悉 Python,那么你可能会习惯在类中添加 __str__() 方法而不是 __unicode__() 方法。 We use 我们在这里使用 __unicode__() 是因为 Django 模型默认处理的是 Unicode 格式。当所有存储在数据库中的数据返回时都会转换为 Unicode 的格式。
>
>
> Django 模型有个默认的 __str__() 方法 会去调用 __unicode__() 并将结果转换为 UTF-8 编码的字符串。这就意味着 unicode(p) 会返回一个 Unicode 字符串,而 str(p) 会返回一个以 UTF-8 编码的普通字符串。
>
>
> 如果这让你感觉困惑,那么你只要记住在模型中添加 __unicode__() 方法。 运气好的话,这些代码会正常运行。
请注意这些都是普通的 Python 方法。让我们来添加个自定义方法,为了演示而已:
......@@ -487,4 +483,10 @@ True
欲了解更多有关模型关系的信息,请查看 访问关联对象 。欲了解更多有关如何使用双下划线来通过 API 执行字段查询的,请查看 字段查询 。 如需完整的数据库 API 信息,请查看我们的 数据库 API 参考 。
当你对 API 有所了解后, 请查看 教程 第2部分 来学习 Django 的自动生成的管理网站是如何工作的。
\ No newline at end of file
当你对 API 有所了解后, 请查看 教程 第2部分 来学习 Django 的自动生成的管理网站是如何工作的。
> 译者:[Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html),原文:[Part 1: Models](https://docs.djangoproject.com/en/1.8/intro/tutorial01/)。
>
> 本文以 [CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 协议发布,转载请保留作者署名和文章出处。
>
> [Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html)人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。
<!--
来源:http://django-chinese-docs.readthedocs.org/
-->
# 编写你的第一个 Django 程序 第2部分 #
本教程上接 教程 第1部分 。 我们将继续开发 Web-poll 应用,并且专注在 Django 的 自动生成的管理网站上。
> 哲理
>
>
> 为你的员工或客户生成添加、修改和删除内容的管理性网站是个单调乏味的工作。 出于这个原因,Django 根据模型完全自动化创建管理界面。
>
>
> Django 是在新闻编辑室环境下编写的,“内容发表者”和“公共”网站之间有 非常明显的界线。网站管理员使用这个系统来添加新闻、事件、体育成绩等等, 而这些内容会在公共网站上显示出来。Django 解决了为网站管理员创建统一 的管理界面用以编辑内容的问题。
>
>
> 管理界面不是让网站访问者使用的。它是为网站管理员准备的。
## 启用管理网站 ##
......@@ -58,13 +54,13 @@ python manage.py runserver
![](https://docs.djangoproject.com/en/1.8/_images/admin01.png)
> 和你看到的不一样?
>
>
> 如果看到这,而不是上面的登录界面,那你应该得到一个类似如下所示的错误页面报告:
>
>
```
ImportError at /admin/ cannot import name patterns ...
```
>
>
> 那么你很可能使用的 Django 版本不符合本教程的版本。 你可以切换到对应的旧版本教程去或者更新到较新的 Django 版本。
## 进入管理网站 ##
......@@ -333,9 +329,9 @@ TEMPLATE_DIRS = (
现在从 Django 源代码中自带的默认 Django 管理模板的目录 (django/contrib/admin/templates) 下复制 admin/base_site.html 模板到你正在使用的 TEMPLATE_DIRS 中任何目录的子目录 admin 下。例如:如果你的 TEMPLATE_DIRS 中包含 '/path/to/mysite/templates' 目录, 如上所述,复制 django/contrib/admin/templates/admin/base_site.html 模板到 /path/to/mysite/templates/admin/base_site.html 。不要忘了是 admin 子目录。
> Django 的源代码在哪里?
>
>
> 如果在你的文件系统中很难找到 Django 源代码,可以运行如下命令:
>
>
```
python -c "
import sys
......@@ -366,4 +362,10 @@ print(django.__path__)"
你需要自定义的模板是 admin/index.html 。 (同先前处理 admin/base_site.html 一样 – 从默认目录下复制到你自定义的模板目录下。) 编辑这个文件,你将看到一个名为 app_list 的模板变量。这个变量包含了每一个 已安装的 Django 应用。你可以通过你认为最好的方法硬编码链接到特定对象的管理页面,而不是使用默认模板。 再次强调,如果你不能理解模板语言的话不用担心 – 我们将在教程 3 中详细介绍。
当你熟悉了管理网站的功能后,阅读 教程 第3部分 开始开发公共 poll 界面。
\ No newline at end of file
当你熟悉了管理网站的功能后,阅读 教程 第3部分 开始开发公共 poll 界面。
> 译者:[Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html),原文:[Part 2: The admin site](https://docs.djangoproject.com/en/1.8/intro/tutorial02/)。
>
> 本文以 [CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 协议发布,转载请保留作者署名和文章出处。
>
> [Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html)人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。
<!--
来源:http://django-chinese-docs.readthedocs.org/
-->
# 编写你的第一个 Django 程序 第3部分 #
本教程上接 教程 第2部分 。我们将继续 开发 Web-poll 应用并且专注在创建公共界面 – “视图 (views )”。
......@@ -198,13 +194,13 @@ def index(request):
Django 的 TEMPLATE_LOADERS 配置中包含一个知道如何从各种来源导入模板的可调用的方法列表。 其中有一个默认值是 django.template.loaders.app_directories.Loader ,Django 就会在每个 INSTALLED_APPS 的 “templates” 子目录下查找模板 - 这就是 Django 知道怎么找到 polls 模板的原因,即使我们 没有修改 TEMPLATE_DIRS, 还是如同在 教程 第2部分 那样。
> 组织模板
>
>
> 我们 能够 在一个大的模板目录下一起共用我们所有的模板,而且它们会运行得很好。 但是,此模板属于 polls 应用,因此与我们在上一个教程中创建的管理模板不同, 我们要把这个模板放在应用的模板目录 (polls/templates) 下而不是项目的模板目录 (templates) 。 我们将在 可重用的应用教程 中详细讨论我们 为什么 要这样做。
在你刚才创建的``templates`` 目录下,另外创建个名为 polls 的目录,并在其中创建一个 index.html 文件。换句话说,你的模板应该是 polls/templates/polls/index.html 。由于知道如上所述的 app_directories 模板加载器是 如何运行的,你可以参考 Django 内的模板简单的作为 polls/index.html 模板。
> 模板命名空间
>
>
> 现在我们 也许 能够直接把我们的模板放在 polls/templates 目录下 ( 而不是另外创建 polls 子目录 ) , 但它实际上是一个坏注意。 Django 将会选择第一个找到的按名称匹配的模板, 如果你在 不同 应用中有相同的名称的模板,Django 将无法区分它们。 我们想要让 Django 指向正确的模板,最简单的方法是通过 命名空间 来确保是 他们的模板。也就是说,将模板放在 另一个 目录下并命名为应用本身的名称。
将以下代码添加到该模板中:
......@@ -301,9 +297,9 @@ def detail(request, poll_id):
get_object_or_404() 函数需要一个 Django 模型类作为第一个参数以及 一些关键字参数,它将这些参数传递给模型管理器中的 get() 函数。 若对象不存在时就抛出 Http404 异常。
> 哲理
>
>
> 为什么我们要使用一个 get_object_or_404() 辅助函数 而不是在更高级别自动捕获 ObjectDoesNotExist 异常, 或者由模型 API 抛出 Http404 异常而不是 ObjectDoesNotExist 异常?
>
>
> 因为那样会使模型层与视图层耦合在一起。Django 最重要的设计目标之一 就是保持松耦合。一些控制耦合在 django.shortcuts 模块中介绍。
还有个 get_list_or_404() 函数,与 get_object_or_404() 一样 – 不过执行的是 filter() 而不是 get() 。若返回的是空列表将抛出 Http404 异常。
......@@ -358,13 +354,13 @@ get_object_or_404() 函数需要一个 Django 模型类作为第一个参数以
```
> Note
>
>
> 如果 {% url 'detail' poll.id %} (含引号) 不能运行,但是 {% url detail poll.id %} (不含引号) 却能运行,那么意味着你使用的 Djang 低于 < 1.5 版。这样的话,你需要在模板文件的顶部添加如下的声明::
>
>
```
{% load url from future %}
```
>
>
其原理就是在 polls.urls 模块中寻找指定的 URL 定义。 你知道命名为 ‘detail’ 的 URL 就如下所示那样定义的一样::
......@@ -414,4 +410,10 @@ urlpatterns = patterns('',
<li><a href="{% url 'polls:detail' poll.id %}">{{ poll.question }}</a></li>
```
当你编写视图熟练后,请阅读 教程 第4部分 来学习如何处理简单的表单和通用视图。
\ No newline at end of file
当你编写视图熟练后,请阅读 教程 第4部分 来学习如何处理简单的表单和通用视图。
> 译者:[Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html),原文:[Part 3: Views and templates](https://docs.djangoproject.com/en/1.8/intro/tutorial03/)。
>
> 本文以 [CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 协议发布,转载请保留作者署名和文章出处。
>
> [Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html)人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。
<!--
来源:http://django-chinese-docs.readthedocs.org/
-->
# 编写你的第一个 Django 程序 第4部分 #
本教程上接 教程 第3部分 。我们将 继续开发 Web-poll 应用并且关注在处理简单的窗体和优化我们的代码。
......@@ -129,9 +125,9 @@ detail() ( 在 教程 第3部分 中) 和 results() 视图 都很简单 – 并
请继续阅读了解详细的信息。
> 为什么要重构代码?
>
>
> 通常情况下,当你编写一个 Django 应用时,你会评估下通用视图是否适合解决你的问题, 如果适合你就应该从一开始就使用它,而不是进行到一半才重构你的代码。 但是本教程直到现在都故意集中介绍“硬编码”视图,是为了专注于核心概念上。
>
>
> 就像你在使用计算器前需要知道基本的数学知识一样。
## 修改 URLconf ##
......@@ -183,4 +179,10 @@ urlpatterns = patterns('',
有关通用视图的完整详细信息,请参阅 通用视图文档.
当你熟悉了窗体和通用视图后,请阅读 教程 第5部分 来学习测试我们的投票应用。
\ No newline at end of file
当你熟悉了窗体和通用视图后,请阅读 教程 第5部分 来学习测试我们的投票应用。
> 译者:[Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html),原文:[Part 4: Forms and generic views](https://docs.djangoproject.com/en/1.8/intro/tutorial04/)。
>
> 本文以 [CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 协议发布,转载请保留作者署名和文章出处。
>
> [Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html)人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。
<!--
来源:http://python.usyiyi.cn/django/index.html
-->
# 编写你的第一个Django应用,第5部分 #
本教程上接教程第4部分。 我们已经建立一个网页投票应用,现在我们将为它创建一些自动化测试。
......@@ -91,7 +87,7 @@ True
我们需要在自动化测试里做的和刚才在shell里做的差不多,让我们来将它转换成一个自动化测试。
应用的测试用例安装惯例一般放在该应用的tests.py文件中;测试系统将自动在任何以test开头的文件中查找测试用例。
应用的测试用例安装惯例一般放在该应用的tests.py文件中;测试系统将自动在任何以test开头的文件中查找测试用例。
将下面的代码放入polls应用下的tests.py文件中:
......@@ -508,4 +504,10 @@ Django 中的测试有关于测试更加全面的信息。
关于测试的完整细节,请查看Django 中的测试。
当你对Django 视图的测试感到满意后,请阅读本教程的第6部分来 了解静态文件的管理。
\ No newline at end of file
当你对Django 视图的测试感到满意后,请阅读本教程的第6部分来 了解静态文件的管理。
> 译者:[Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html),原文:[Part 5: Testing](https://docs.djangoproject.com/en/1.8/intro/tutorial05/)。
>
> 本文以 [CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 协议发布,转载请保留作者署名和文章出处。
>
> [Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html)人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。
<!--
来源:http://python.usyiyi.cn/django/index.html
-->
# 编写你的第一个Django应用,第6部分 #
本教程上接教程 5。 我们已经建立一个测试过的网页投票应用,现在我们将添加一张样式表和一张图片。
......@@ -21,8 +17,8 @@ Django 的 STATICFILES_FINDERS 设置包含一个查找器列表,它们知道
在你刚刚创建的static目录中,创建另外一个目录polls并在它下面创建一个文件style.css。换句话讲,你的样式表应该位于polls/static/polls/style.css。因为AppDirectoriesFinder 静态文件查找器的工作方式,你可以通过polls/style.css在Django中访问这个静态文件,与你如何访问模板的路径类似。
> 静态文件的命名空间
>
> 与模板类似,我们可以家那个我们的静态文件直接放在polls/static(而不是创建另外一个polls 子目录),但实际上这是一个坏主意。Django将使用它所找到的第一个文件名符合要求的静态文件,如果在你的不同应用中存在两个同名的静态文件,Django将无法区分它们。 我们需要告诉Django该使用其中的哪一个,最简单的方法就是为它们添加命名空间。 也就是说,将这些静态文件放进以它们所在的应用的名字命名的另外一个目录下。
>
> 与模板类似,我们可以家那个我们的静态文件直接放在polls/static(而不是创建另外一个polls 子目录),但实际上这是一个坏主意。Django将使用它所找到的第一个文件名符合要求的静态文件,如果在你的不同应用中存在两个同名的静态文件,Django将无法区分它们。 我们需要告诉Django该使用其中的哪一个,最简单的方法就是为它们添加命名空间。 也就是说,将这些静态文件放进以它们所在的应用的名字命名的另外一个目录下。
将下面的代码放入样式表中 (polls/static/polls/style.css):
......@@ -62,7 +58,7 @@ body {
重新加载 http://localhost:8000/polls/ ,你应该在屏幕的右下方看到载入的背景图片。
> 警告:
>
>
> 当然,{% static %}模板标签不能用在静态文件(比如样式表)中,因为他们不是由Django生成的。 你应该永远使用相对路径来相互链接静态文件,因为这样你可以改变STATIC_URL ( static模板标签用它来生成URLs)而不用同时修改一大堆静态文件的路径。
这些知识基础。关于静态文件设置的更多细节和框架中包含的其它部分,参见静态文件 howto 和静态文件参考。部署静态文件讨论如何在真实的服务器上使用静态文件。
......@@ -71,4 +67,10 @@ body {
新手教程到此结束。 在这期间,你可能想要在如何查看文档中了解文档的结构和查找相关信息方法。
如果你熟悉Python 打包的技术,并且对如何将投票应用制作成一个“可重用的应用”感兴趣,请看高级教程:如何编写可重用的应用。
\ No newline at end of file
如果你熟悉Python 打包的技术,并且对如何将投票应用制作成一个“可重用的应用”感兴趣,请看高级教程:如何编写可重用的应用。
> 译者:[Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html),原文:[Part 6: Static files](https://docs.djangoproject.com/en/1.8/intro/tutorial06/)。
>
> 本文以 [CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 协议发布,转载请保留作者署名和文章出处。
>
> [Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html)人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。
<!--
来源:http://python.usyiyi.cn/django/index.html
-->
# 高级教程:如何编写可重用的应用 #
本高级教程上接教程 6。我们将把我们的网页投票转换成一个独立的Python包,这样你可以在其它项目中重用或者分享给其它人。
......@@ -17,13 +13,13 @@
比如说,你正在开始一个新的项目,需要一个像我们正在编写的投票应用。你如何让该应用可重用?幸运的是,你已经在正确的道路上。在教程 3中,我们看到我们可以如何使用include将投票应用从项目级别的URLconf 解耦。在本教程中,我们将更进一步,让你的应用在新的项目中容易地使用并随时可以发布给其它人安装和使用。
> 包?应用?
>
>
> Python 包 提供的方式是分组相关的Python 代码以容易地重用。一个包包含一个或多个Python代码(也叫做“模块”)。
>
>
> 包可以通过import foo.bar 或from foo import bar 导入。如果一个目录(例如polls)想要形成一个包,它必须包含一个特殊的文件__init__.py,即使这个文件为空。
>
>
> 一个Django 应用 只是一个Python包,它特意用于Django项目中。一个应用可以使用常见的Django 约定,例如具有models、tests、urls和views 子模块。
>
>
> 后面我们使用打包这个词来描述将一个Python包变得让其他人易于安装的过程。我们知道,这可能有点绕人。
## 你的项目和你的可重用的应用 ##
......@@ -78,9 +74,9 @@ Python packaging refers to preparing your app in a specific format that can be e
首先,在你的Django项目之外,为polls创建一个父目录。称这个目录为django-polls。
> 为你的应用选择一个名字
>
>
> 让为你的包选择一个名字时,检查一下PyPI中的资源以避免与已经存在的包有名字冲突。当创建一个要发布的包时,在你的模块名字前面加上django-通常很有用。 这有助于其他正在查找Django应用的人区分你的应用是专门用于Django的。
>
>
> 应用的标签(应用的包的点分路径的最后部分)在INSTALLED_APPS中必须唯一。避免使用与Django的contrib 包 中任何一个使用相同的标签,例如auth、admin和messages。
将polls 目录移动到django-polls目录。
......@@ -190,9 +186,9 @@ recursive-include docs *
因为,我们将polls 目录移到项目的目录之外,它不再工作了。我们将通过安装我们的新的django-polls包来修复它。
> 安装成某个用户的库
>
>
> 以下的步骤将安装django-polls 成某个用户的库。根据用户安装相比系统范围的安装具有许多优点,例如用于没有管理员权限的系统上以及防止你的包影响系统的服务和机器上的其它用户。
>
>
> 注意根据用户的安装仍然可以影响以该用户身份运行的系统工具,所以virtualenv 是更健壮的解决办法(见下文)。
安装这个包,使用pip(你已经安装好它了,对吧?):
......@@ -224,4 +220,10 @@ pip uninstall django-polls
+ 修改这个用户的库可能影响你的系统上的其它Python 软件。
+ 你将不可以运行这个包的多个版本(或者具有相同名字的其它包)。
特别是一旦你维护几个Django项目,这些情况就会出现。如果确实出现,最好的解决办法是使用virtualenv。这个工具允许你维护多个分离的Python环境,每个都具有它自己的库和包的命名空间。
\ No newline at end of file
特别是一旦你维护几个Django项目,这些情况就会出现。如果确实出现,最好的解决办法是使用virtualenv。这个工具允许你维护多个分离的Python环境,每个都具有它自己的库和包的命名空间。
> 译者:[Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html),原文:[How to write reusable apps](https://docs.djangoproject.com/en/1.8/intro/reusable-apps/)。
>
> 本文以 [CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 协议发布,转载请保留作者署名和文章出处。
>
> [Django 文档协作翻译小组](http://python.usyiyi.cn/django/index.html)人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。
<!--
来源:http://python.usyiyi.cn/django/index.html
-->
# 为Django编写首个补丁 #
## 介绍 ##
......@@ -19,7 +15,7 @@
当然对于其中的大部分内容,Django会尽可能做出解释以帮助广大的读者。
> 何处获得帮助:
>
>
> 如果你在使用本教程时遇到困难,你可以发送信息给django开发者 或者登陆 #django-dev on irc.freenode.net 向其他Django使用者需求帮助。
## 教程包含的内容 ##
......@@ -41,4 +37,4 @@
使用教程前,你需要安装好Git,下载Django的最新开发版本并且为你作出的改变生成补丁文件
为了确认你是否已经安装了Git, 输入 git 进入命令行。如果信息提示命令无法找到, 你就需要下载并安装Git, 详情阅读 Git’s download page.
\ No newline at end of file
为了确认你是否已经安装了Git, 输入 git 进入命令行。如果信息提示命令无法找到, 你就需要下载并安装Git, 详情阅读 Git’s download page.
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册