正如我们的第一个目标,创建一个网页,用来输出这个著名的示例信息:
Hello world.
如果你曾经发布过Hello world页面,但是没有使用网页框架,只是简单的在hello.html文本文件中输入Hello World,然后上传到任意的一个网页服务器上。 注意,在这个过程中,你已经说明了两个关于这个网页的关键信息: 它包括(字符串 "Hello world")和它的URL( http://www.example.com/hello.html , 如果你把文件放在子目录,也可能是 http://www.example.com/files/hello.html)。
使用Django,你会用不同的方法来说明这两件事 页面的内容是靠view function(视图函数) 来产生,URL定义在 URLconf 中。首先,我们先写一个Hello World视图函数。
在上一章使用django-admin.py startproject制作的mysite文件夹中,创建一个叫做views.py的空文件。这个Python模块将包含这一章的视图。 请留意,Django对于view.py的文件命名没有特别的要求,它不在乎这个文件叫什么。但是根据约定,把它命名成view.py是个好主意,这样有利于其他开发者读懂你的代码,正如你很容易的往下读懂本文。
我们的Hello world视图非常简单。 这些是完整的函数和导入声明,你需要输入到views.py文件:
from django.http import HttpResponse def hello(request): return HttpResponse("Hello world")
我们逐行逐句地分析一遍这段代码:
这里主要讲的是: 一个视图就是Python的一个函数。这个函数第一个参数的类型是HttpRequest;它返回一个HttpResponse实例。为了使一个Python的函数成为一个Django可识别的视图,它必须满足这两个条件。 (也有例外,但是我们稍后才会接触到。
你的第一个URLconf
现在,如果你再运行:python manage.py runserver,你还将看到Django的欢迎页面,而看不到我们刚才写的Hello world显示页面。 那是因为我们的mysite项目还对hello视图一无所知。我们需要通过一个详细描述的URL来显式的告诉它并且激活这个视图。 (继续我们刚才类似发布静态HTML文件的例子。现在我们已经创建了HTML文件,但还没有把它上传至服务器的目录。)为了绑定视图函数和URL,我们使用URLconf。
URLconf 就像是 Django 所支撑网站的目录。 它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。 你就是以这种方式告诉 Django,对于这个 URL 调用这段代码,对于那个 URL 调用那段代码。 例如,当用户访问/foo/时,调用视图函数foo_view(),这个视图函数存在于Python模块文件view.py中。
前一章中执行 django-admin.py startproject 时,该脚本会自动为你建了一份 URLconf(即 urls.py 文件)。 默认的urls.py会像下面这个样子:
from django.conf.urls.defaults import * # Uncomment the next two lines to enable the admin: # from django.contrib import admin # admin.autodiscover() urlpatterns = patterns('', # Example: # (r'^mysite/', include('mysite.foo.urls')), # Uncomment the admin/doc line below and add 'django.contrib.admindocs' # to INSTALLED_APPS to enable admin documentation: # (r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: # (r'^admin/', include(admin.site.urls)), )
默认的URLconf包含了一些被注释起来的Django中常用的功能,仅仅只需去掉这些注释就可以开启这些功能. 下面是URLconf中忽略被注释的行后的实际内容
from django.conf.urls.defaults import * urlpatterns = patterns('', )
让我们逐行解释一下代码:
当前应该注意是 urlpatterns 变量, Django 期望能从 ROOT_URLCONF 模块中找到它。 该变量定义了 URL 以及用于处理这些 URL 的代码之间的映射关系。 默认情况下,URLconf 所有内容都被注释起来了——Django 应用程序还是白版一块。 (注:那是上一节中Django怎么知道显示欢迎页面的原因。 如果 URLconf 为空,Django 会认定你才创建好新项目,因此也就显示那种信息。
如果想在URLconf中加入URL和view,只需增加映射URL模式和view功能的Python tuple即可. 这里演示如何添加view中hello功能.
from django.conf.urls.defaults import * from mysite.views import hello urlpatterns = patterns('', ('^hello/$', hello), )
请留意:为了简洁,我们移除了注释代码。 如果你喜欢的话,你可以保留那些行。)
我们做了两处修改。
简单来说,我们只是告诉 Django,所有指向 URL /hello/ 的请求都应由 hello 这个视图函数来处理。
Python 搜索路径
Python 搜索路径 就是使用 import 语句时,Python 所查找的系统目录清单。
举例来说,假定你将 Python 路径设置为 ['','/usr/lib/python2.4/site-packages','/home/username/djcode/'] 。如果执行代码 from foo import bar ,Python 将会首先在当前目录查找 foo.py 模块( Python 路径第一项的空字符串表示当前目录)。 如果文件不存在,Python将查找 /usr/lib/python2.4/site-packages/foo.py 文件。
如果你想看Python搜索路径的值,运行Python交互解释器,然后输入:
>>> import sys >>> print sys.path
通常,你不必关心 Python 搜索路径的设置。 Python 和 Django 会在后台自动帮你处理好。
讨论一下URLpattern的语法是值得的,因为它不是显而易见的。 虽然我们想匹配地址/hello/,但是模式看上去与这有点差别。 这就是为什么:
另外需要注意的是,我们把hello视图函数作为一个对象传递,而不是调用它。 这是 Python (及其它动态语言的) 的一个重要特性: 函数是一级对象(first-class objects), 也就是说你可以像传递其它变量一样传递它们。 很酷吧?
启动Django开发服务器来测试修改好的 URLconf, 运行命令行 python manage.py runserver 。 (如果你让它一直运行也可以,开发服务器会自动监测代码改动并自动重新载入,所以不需要手工重启) 开发服务器的地址是 http://127.0.0.1:8000/ ,打开你的浏览器访问 http://127.0.0.1:8000/hello/ 。 你就可以看到输出结果了。 开发服务器将自动检测Python代码的更改来做必要的重新加载, 所以你不需要重启Server在代码更改之后。服务器运行地址`` http://127.0.0.1:8000/`` ,所以打开浏览器直接输入`` http://127.0.0.1:8000/hello/`` ,你将看到由你的Django视图输出的Hello world。
万岁! 你已经创建了第一个Django的web页面。
本章我们将介绍Django 管理工具及如何使用 Django 来创建项目,第一个项目我们以 HelloWorld 来命令项目。 测试版本说明: Python 2.7.10 Django 1.10.6 Django 管理工具 安装 Django 之后,您现在应该已经有了可用的管理工具 django-admin.py。我们可以使用 django-admin.py 来创建一个项目: 我们可以来看下dja
在创建应用之前,首先我们要做的是在你的git项目上将Dockerfile文件提交上去,并且生成一个Tag或releases版本。 Dockerfile 参考 FROM nginx:latest COPY ./ /usr/share/nginx/html # ADD xxx.com.conf /etc/nginx/conf.d/ # 如果需要的话 CMD ["/bin/bash", "-c",
本文向大家介绍Django 创建您的第一个模型,包括了Django 创建您的第一个模型的使用技巧和注意事项,需要的朋友参考一下 示例 通常在models.py应用程序子目录下的文件中定义模型。在Model类的django.db.models模块是一个很好的起点类来扩展你的模型。例如: 模型中的每个属性代表数据库中的一列。 title 是最大长度为100个字符的文本 author是ForeignKe
主要内容:简单的视图视图功能,或简称"view",是一个简单的Python函数,它接受一个Web请求,并返回一个Web响应。此响应可以是 Web页的HTML内容,或重定向,或404错误,或XML文档,或图像/片等。例如:使用视图创建页面,请注意需要将一个视图关联到一个URL,并把它看作一个网页。 在Django中,视图必须在应用程序的 views.py 文件中创建。 简单的视图 我们将在 myapp 创建一个简单的视
问题内容: 我正在使用reportlab pdfgen创建PDF。在PDF中,有一个由创建的图像。为此,我要么需要图像的URL,要么在视图中需要图像的路径。我设法建立了URL,但是如何获取图像的本地路径? 我如何获得网址: 问题答案: 既然这是Google的最佳结果,我想我应该添加另一种方法来做到这一点。我个人更喜欢这一点,因为它将实现留给了Django框架。
我知道如何在MVC中创建视图。