URL 模式就是一个简单的一般形式的 URL - 比如: /newsarchive///. Django 是通过 ‘URLconfs’ 从 URL 获取到视图的。...本教程中介绍了使用 URLconfs 的基本指令,你可以查阅 django.core.urlresolvers 来获取更多信息。 编写你的第一个视图 让我们编写第一个视图。...如果你需要正则表达式方面的帮助,请参阅 Wikipedia’s entry 和本文档中的 re 模块。...- 这就是 Django 知道怎么找到 polls 模板的原因,即使我们 没有修改 TEMPLATE_DIRS, 还是如同在 教程 第2部分 那样。...URL 名称的命名空间 本教程中的项目只有一个应用:polls 。在实际的 Django 项目中,可能有 5、10、20 或者 更多的应用。Django 是如何区分它们的 URL 名称的呢?
从哪里获得帮助: 如果你在阅读或实践本教程中遇到困难, 请发消息给 django-users 或加入 #django on irc.freenode.net 来和其他的 Django 用户交流,他们也许能帮到你...如果命令失败了,查看 运行``django-admin``时遇到的问题,可能能给你提供帮助。 注解 你得避免使用 Python 或 Django 的内部保留字来命名你的项目。...: 最外层的:file: mysite/ 根目录只是你项目的容器, Django 不关心它的名字,你可以将它重命名为任何你喜欢的名字。...你的应用可以存放在任何 Python path 中定义的路径。在这个教程中,我们将在你的 manage.py 同级目录下创建投票应用。这样它就可以作为顶级模块导入,而不是 mysite 的子模块。...polls.urls 模块。
如果你已经安装了Django,那么你应该会看到Django的版本号,反之,你将会看到错误提示“No module named django”。...If it didn’t work, see Problems running django-admin. 它会在当前目录创建一个名为mysite的文件夹,如果没有,请查看 帮助 。...你的应用代码可以放置在 python路径 下的任何位置,在本教程中,我们会在manage.py文件的旁边创建我们的投票应用,这样我们在引入的时候可以将这个应用作为顶级模块而不是mysite的子模块引入。...url配置指向polls.urls模块。...为你的url命名,你可以在Django的其他地方简洁明了的引用它,尤其是从模版中引用,这种强大的功能可以让你在你的项目中仅仅修改一个文件就能全局的改变url对象 When you’re comfortable
如果你最近没有完成教程1–6,我们建议你阅读它们使得你的示例项目与下面描述的相匹配。 可重用很重要 设计、构建、测试和维护一个网页应用有许多工作要做。...Django 自身也只是一个Python 包。这意味着你可以获取已经存在的Python包和Django应用并将它们融合到你自己的网页项目。你只需要编写你项目的独特的部分。...在教程 3中,我们看到我们可以如何使用include将投票应用从项目级别的URLconf 解耦。在本教程中,我们将更进一步,让你的应用在新的项目中容易地使用并随时可以发布给其它人安装和使用。 包?...如果你需要帮助,你可以参考如何使用pip安装Django。你可以使用同样的方法安装setuptools。...选择License超出本教程的范围,但值得一说的是公开发布的代码如果没有License是毫无用处的。
上面的代码检查KeyError,如果没有给出choice 将重新显示Question表单和一个错误信息。...如果你提交时没有选择任何 Choice,你应该看到错误信息。 我们的 vote() 视图代码有一个小问题。...除了服务端生成的HTML以外,网络应用通常需要一些额外的文件——比如图片,脚本和样式表——来帮助渲染网络页面。在Django中,我们把这些文件统称为“静态(static)文件”。...管理后台采用相同的目录结构管理它的静态文件。 在你刚创建的static文件夹中创建一个名为 polls的文件夹,再在polls文件夹中创建一个名为style.css的文件。...出于本教程的目的,我们使用了一个名为“background.png”的文件,它的完整路径为“polls/static/polls/images/background.png”。
Django 版本或一个提示你 “No module named django” 的错误。...在哪里可以获得帮助: 如果您在学习本教程中遇到问题,请在 django-users 上发贴或者在 #django on irc.freenode.net 上与其他可能会帮助您的 Django 用户交流...默认的项目布局最近刚刚改变过。如果你看到的是一个“扁平”结构的目录布局(没有内层 mysite/ 目录),你很可能正在使用一个和本教程版本不一致的 Django 版本。...你需要切换到对应的旧版教程或者使用较新的 Django 版本。 这些文件是: 外层 mysite/ 目录只是你项目的一个容器。对于 Django 来说该目录名并不重要; 你可以重命名为你喜欢的。...哲理 Django 应用是“可插拔的”:你可以在多个项目使用一个应用,你还可以分发应用,因为它们没有被捆绑到一个给定的 Django 安装环境中。
您的视图可以从数据库读取记录,也可以不读取。它可以使用模板系统:如Django的或第三方Python模板系统 或不。...因此,我们使用Django的模板系统,通过创建一个视图能够调用的模板,将页面的设计从Python中分离出来。 首先,在你的polls目录下创建一个叫做 templates的目录。...在刚刚创建的templates目录中,创建另一个名为polls的目录,并在其中创建一个名为index.html的文件。...404错误 现在,让我们处理Question 详细页面的视图 —— 显示Question内容的页面: # polls/views.py from django.http import Http404...URL name的命名空间 教程中的这个项目只有一个应用polls。在真实的Django项目中,可能会有五个、十个、二十个或者更多的应用。 Django如何区分它们URL的名字呢?
编写你的第一个 Django 程序 第4部分 本教程上接 教程 第3部分 。我们将 继续开发 Web-poll 应用并且关注在处理简单的窗体和优化我们的代码。... 现在,在浏览器中访问 /polls/1/ 并完成投票。每次投票后你将会看到结果页数据都有更新。 如果你没有选择投票选项就提交了,将会看到错误的信息。...这些视图代表了基本的 Web 开发中一种常见的问题: 根据 URL 中的参数从数据库中获取数据,加载模板并返回渲染后的内容。...DetailView 通用视图期望从 URL 中捕获名为 “pk” 的主键值,因此我们将 poll_id 改为 pk 。...默认情况下, DetailView 通用视图使用名为 /_detail.html 的模板。在我们的例子中,将使用名为 “polls/poll_detail.html” 的模板。
当用户在你的网站上请求一个页面,如/polls/34/,Django会加载mysite.urls模块(因为这是 ROOT_URLCONF的设置)。...所以让我们使用 Django 的模板系统,只要创建一个视图,就可以将页面的设计从代码中分离出来。 首先,在你的polls目录里创建一个 templates目录。...这就是为什么尽管我们没有像在第二部分中那样修改 DIRS 设置,Django 也能正确找到 polls 的模板位置的原因。...() 函数获取一个对象,如果不存在就抛出 Http404 错误也是一个普遍的流程。...为 URL 名称添加命名空间 教程项目只有一个应用:polls 。在一个真实的 Django 项目中,可能会有五个,十个,甚至更多应用。Django 如何分辨重名的 URL 呢?
Django 自身也只是一个Python 包。这意味着你可以获取已经存在的Python包和Django应用并将它们融合到你自己的网页项目。你只需要编写你项目的独特的部分。...在教程 3中,我们看到我们可以如何使用include将投票应用从项目级别的URLconf 解耦。在本教程中,我们将更进一步,让你的应用在新的项目中容易地使用并随时可以发布给其它人安装和使用。 包?...如果你需要帮助,你可以参考如何使用pip安装Django。你可以使用同样的方法安装setuptools。...如何选择License超出本教程的范围,但值得一说的是, 公开发布的代码如果没有License是毫无用处的。...更多关于打包的信息,参见Python 的 打包和分发项目的教程。 使用你自己的包 因为,我们将polls 目录移到项目的目录之外,它不再工作了。
本教程以django2.0为框架,搭建一个简易的投票系统,主要参考 django2.0的官方文档 通过此教程,将实现一个基本的投票应用 包括两个部分: 前台:用户可在前台看到所有候选者并进行投票 后台:...mysite 项目相当于django的一个实例,包含了所有配置文件以及所有应用 项目名称在命名时应避免使用python内置的关键字或者django的模块组件名。...如,不能将项目命名为django,这将会与Django自身冲突,也不能将项目命名为test,会与python内置的test模块冲突 目录结构: $ cd mysite $ tree . ├── manage.py...启动服务后会提示你还没有进行数据迁移。这点先忽略,后面会讲到 浏览器访问:http://127.0.0.1:8000/ 就能看到django的欢迎页 ?...但有些行为可能触发不到开发服务器的自动加载,这时就需要我们手工重新启动 创建投票应用 项目与应用的区别:一个项目中可以包含多个应用,应用是指功能性的划分模块。
在本教程中,我们不会使用 Django 的此功能。 path() argument: name 通过命名 URL,您可以从 Django 的其他地方明确地引用它,特别是在模板中。...OK migrate 命令获取所有还没有应用的迁移(Django 跟踪哪些迁移是使用数据库中名为 django_migrations 的特殊表应用的),并在数据库上运行它们——本质上,就是将您对模型所做的更改与数据库中的模式同步...当有人从您的网站请求页面时(例如“ /polls/34 /"),Django 将加载 mysite.urls Python 模块,因为它由 ROOT_URLCONF 设置指向。...上下文是模板变量名到 Python 对象的映射字典。 通过将浏览器指向" /polls/ "来加载页面,您应该会看到一个项目符号列表,其中包含教程第二部分中的" What 's up "问题。...这是它现在的样子: 默认情况下,Django 显示每个对象的 str()。但有时如果我们能显示单独的字段会更有帮助。
如果没有匹配到正则表达式,或者如果过程中抛出一个异常,Django 将调用一个适当的错误处理视图。请参见下面的错误处理。...它们的默认值应该满足大部分项目,但是通过赋值给它们以进一步的自定义也是可以的。 完整的细节请参见自定义错误视图。 这些值可以在你的根URLconf 中设置。...根据Django 视图的标识和将要传递给它的参数的值,获取与之关联的URL。 第一种方式是我们在前面的章节中一直讨论的用法。...在下面的例子中,我们将讨论在两个不同的地方部署教程中的polls 应用,这样我们可以为两种不同的用户(作者和发布者)提供相同的功能。...如果还有一个默认的实例 —— 例如,一个名为’polls’ 的实例 —— 上面例子中唯一的变化是当没有当前实例的情况(上述第二种情况)。
如果请求的URL没有匹配到任何一个正则表达式,或者在匹配过程的任何时刻抛出了一个异常,那么Django 将调用适当的错误处理视图进行处理。请参见下面的错误处理。...它们的默认值应该满足大部分项目,但是通过赋值给它们以进一步的自定义也是可以的。 完整的细节请参见自定义错误视图。 这些值可以在你的根URLconf 中设置。...根据Django 视图的标识和将要传递给它的参数的值,获取与之关联的URL。 第一种方式是我们在前面的章节中一直讨论的用法。...在下面的例子中,我们将讨论在两个不同的地方部署教程中的polls应用,这样我们可以为两种不同的用户(作者和发布者)提供相同的功能。...如果还有一个默认的实例 —— 例如,一个名为'polls' 的实例 —— 上面例子中唯一的变化是当没有当前实例的情况(上述第二种情况)。
这就是为什么尽管我们没有像在第二部分中那样修改 DIRS 设置,Django 也能正确找到 polls 的模板位置的原因。..._404() 尝试用 get() 函数获取一个对象,如果不存在就抛出 Http404 错误也是一个普遍的流程。...因为这样做会增加模型层和视图层的耦合性。指导 Django 设计的最重要的思想之一就是要保证松散耦合。一些受控的耦合将会被包含在 django.shortcuts 模块中。...'specifics' path('specifics//', views.detail, name='detail'), ... 7 为 URL 名称添加命名空间 教程项目只有一个应用...在一个真实的 Django 项目中,可能会有五个,十个,二十个,甚至更多应用。Django 如何分辨重名的 URL 呢?
如果没有安装,你会得到一个错误,提示No module named django。 本教程是为Django 1.10和Python 3.4或更高版本编写的。...如果Django版本不匹配,您可以去官网参考您的对应Django版本的教程,或者将Django更新到最新版本。 如果你仍然在使用Python 2.7,你需要稍微调整代码,注意代码中的注释。...如果你曾经学过普通的旧式的PHP(没有使用过现代的框架),你可能习惯于将代码放在Web服务器的文档根目录下(例如/var/www)。使用Django时,建议你不要这么做。...它的命名对Django无关紧要;你可以把它重新命名为任何你喜欢的名字; manage.py:一个命令行工具,可以使你用多种方式对Django项目进行交互。...要在polls目录中创建一个URLconf,在polls文件夹中创建一个名为urls.py的文件。
本教程是针对 Django 3.0 编写的,该版本支持 Python 3.6 和更高版本 创建项目 如果这是你第一次使用 Django 的话,你需要一些初始化设置。...它的名字对Django来说并不重要;您可以将其重命名为任何您喜欢的名称。 manage.py: 一个让你用各种方式管理 Django 项目的命令行工具。...在这个教程中,我们将在你的 manage.py 同一级目录下创建投票应用。这样它就可以作为顶级模块导入,而不是 mysite 的子模块。...polls.urls 模块。...当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。 这些准则不会匹配 GET 和 POST 参数或域名。
一个简单表单 更新一下在上一个教程中编写的投票详细页面的模板polls/detail.html,让它包含一个HTML 元素: # polls/templates/polls/detail.html...上面的try ... except就是用来检查KeyError,如果没有给出choice将重新显示Question表单和错误信息; 在将Choice得票数加1之后,返回一个HttpResponseRedirect... 现在,在浏览器中访问/polls/1/然后为Question投票。应该看到一个投票结果页面,并且在每次投票后都会更新。 如果提交时没有选择任何Choice,应该会看到错误信息。...由于这个过程是如此的常见,Django又很善解人意的帮你想办法偷懒了,它提供了一种快捷方式,名为generic views系统。...这由model 属性提供; DetailView都是从URL中捕获名为"pk"的主键值,因此才需要把polls/urls.py中question_id改成了pk以使通用视图可以找到主键值。
/ 根目录只是你项目的容器, Django 不关心它的名字,你可以将它重命名为任何你喜欢的名字。...manage.py: 一个让你用各种方式管理 Django 项目的命令行工具。你可以阅读 django-admin and manage.py 获取所有 manage.py 的细节。...'), ] 下一步是要在根 URLconf 文件中指定我们创建的 polls.urls 模块。...当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。这些准则不会匹配 GET 和 POST 参数或域名。...小结 这一节学习了 Django 基本的请求和响应流程,下一节将学习教程的第 2 部分 开始使用数据库.
项目:特定网站应用和配置的集合。一个项目包含多个应用,而一个应用只能在一个项目中。 接下来,在项目根目录下,创建poll应用,这样方便作为顶级模块导入。...默认的,从站点请求页面,比如“/polls/3”,Django会先加载mysite.urls python模块,因为ROOT_URLCONF配置指向它。...先在polls目录下创建一个名为templates的目录,Django会在这里查找目标。 项目的TEMPLATES设置描述了Django将咋样加载并渲染模板。...DetailView视图期望从ULR捕获的主键值被称为pk,所以把question_id改成了pk 默认的DetailView视图使用名为/_detail.html...现在在templates目录中新建一个名为admin的目录,从默认的Django admin模板目录(django/contrib/admin/templates)中拷贝模板文件admin/base_site.html