1、作为我们的第一个目标,让我们创建一个web页面来输出这个著名的示例消息:Hello world。如果您在没有web框架的情况下发布了一个简单的Hello world web页面,那么您只需将Hello world输入到一个文本文件中,并将其命名为Hello.html文件,并将其上传到某个web服务器上的某个目录。请注意在这个过程中您已经指定网页的两条最重要的信息:其内容(字符串“Hello world”)和它的URL(例如,http://www.example.com/hello.html)。

2、在Django的情况下,你可以指定这两件事,但以不同的方式。该页面的内容由一个视图函数生成,URL在URLconf中指定。首先,让我们来编写Hello world视图函数。

我们在上一章创建的内部mysite目录中的第一个视图,创建一个名为views.py的空文件。这个Python模块将包含本章的视图。确保将文件放在内部mysite目录中,即mysite\mysite\ 目录,而不是包含manage.py的目录。我们的Hello world视图很简单。这里是整个函数,加上import语句,您应该将它们输入到views.py文件中。

from django.http importHttpResponsedefhello(request):return HttpResponse("Hello world")

让我们一次一步一步地完成这一行代码:首先,我们导入类的类,它位于django中http模块。我们需要导入这个类,因为它稍后在我们的代码中使用。

接下来,我们定义一个名为hello视图函数的函数。每个视图函数至少需要一个参数,按约定称为请求。这是一个包含触发该视图的当前web请求的信息,也是类django.http..http的一个实例。

在本例中,我们不使用请求做任何事情,但它必须是视图的第一个参数。注意,视图函数的名称并不重要; 为了让Django意识到这一问题,它不需要以某种方式命名。

我们在这里称它为hello,因为这个名字清楚地表明了这个观点的主旨,但是它也可以被命名为hello_wonderful_beautiful_world,或者同样令人作呕的东西。

下一节,你的第一个URLconf,将阐明Django是如何找到这个功能的。这个函数是一个简单的一行程序:它仅仅返回一个已经用文本“Hello world”实例化的HttpResponse 对象。这里的主要经验是:视图仅仅是一个Python函数,它将一个参数作为它的第一个参数,并返回一个关于HttpResponse的实例。

为了让Python函数成为Django视图,它必须做这两件事。(也有例外,但我们稍后会讲到。

在这一点上,您的第一个URLconf 需要再一次运行python manage.py runserver 命令,你仍然可以看到Django的信息,在我们的Hello world视图中没有任何改变。这是因为我们的mysite项目还不知道hello视图;我们需要明确地告诉Django,我们在一个特定的URL上激活了这个视图。

继续我们之前的关于发布静态HTML文件的类比,现在我们已经创建了HTML文件,但是没有将它上传到服务器上的一个目录中。

为了将视图函数与Django的特定URL连接在一起,我们使用了一个URLconf。

URLconf类似于您的django驱动的web站点的内容表。基本上,它是url和应该调用这些url的视图函数之间的映射。这是你告诉Django的,因为这个URL,调用这个代码,并为那个URL调用代码。例如,当某人访问URL/foo/时,调用视图函数fooview(),它位于Python模块views.py中。

在前一章中执行了django-admin startproject时,脚本为您自动创建了一个URLconf:文件urls.py。

默认情况下,它是这样的

"""mysite URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:

https://docs.djangoproject.com/en/1.11/topics/http/urls/

Examples:

Function views

1. Add an import: from my_app import views

2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')

Class-based views

1. Add an import: from other_app.views import Home

2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')

Including another URLconf

1. Import the include() function: from django.conf.urls import url, include

2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))"""

from django.conf.urls importurlfrom django.contrib importadmin

urlpatterns=[

url(r'^admin/', admin.site.urls),

]

如果我们忽略文件顶部的文档注释,这里是URLconf的本质

from django.conf.urls importurlfrom django.contrib importadmin

urlpatterns=[

url(r'^admin/', admin.site.urls),

]

让我们一次一步一步地完成这段代码:第一行从django.conf.urls模块 导入两个函数。包括允许您将完整的Python导入路径包含到另一个URLconf模块,以及使用正则表达式将浏览器中的url与Django项目中的模块匹配的url。第二行从django.contrib模块中调用函数admin。这个函数由include函数调用,以加载Django管理站点的url。

第三行是urlpatterns,一个简单的url()实例列表。

这里要注意的主要问题是可变的urlpatterns,Django希望在你的URLconf模块中找到它。这个变量定义了url和处理这些url的代码之间的映射。要向URLconf添加URL和视图,只需在URL模式和视图函数之间添加一个映射。这里是如何在hello视图中连接

from django.conf.urls importurlfrom django.contrib importadminfrom mysite.views importhello

urlpatterns=[

url(r'^admin/', admin.site.urls),

url(r'^hello/$', hello),

]

我们在这里做了两个更改:首先,我们从它的模块mysite/views.py中导入hello视图,它转化为mysite。Python导入语法中的视图。(这个假设mysite /views.py在您的Python路径上。)接下来,我们向 urlpatterns 添加了行url(r'hello/$',hello)。这 一行被称为URLpattern。这个url()函数告诉Django如何处理你正在配置的url。第一个参数是一个模式匹配字符串(一个正则表达式;更详细地讨论这个)第二个参数是用于该模式的视图函数。url()也可以选择其他可选的参数,我们将在第7章更深入地讨论这个问题。

我们在这里介绍的一个更重要的细节是正则表达式字符串前面的r字符。

这告诉Python,字符串是一个原始字符串,它的内容不应该解释反斜杠。

在普通的Python字符串中,反斜杠用于转义字符串n中的特殊字符,字符串n是一个包含换行符的字符字符串。

当您将r添加为一个原始字符串时,Python并没有应用它的反斜杠,因此r'\n'是一个包含一个文本反斜杠和一个小写n的双字符字符串。

Python的反斜杠和正则表达式中找到的反斜杠之间存在自然冲突,所以在您重新定义Django的正则表达式时,最好使用原始字符串。

简单地说,我们刚刚告诉Django,任何对URL/hello/ 的请求都应该由hello视图函数处理。

值得讨论的是这个URLpattern的语法,因为它可能不那么明显。

尽管我们想要匹配URL/hello/,但是模式看起来有点不同。

这是为什么

Django在检查URL模式之前,从每个输入的URL前删除了这个斜杠。

这意味着我们的URLpattern不包括/hello/中的主要斜杠。

一开始,这可能看起来不太直观,但这一要求简化了诸如在其他URLconfs中包含URLconfs的内容,我们将在第7章中介绍。

该模式包括一个caret (^)和一个美元符号($)。

这些是具有特殊含义的正则表达式字符:caret (^)意味着模式与字符串的开始匹配,而美元符号表示模式与字符串的结尾匹配。

这个概念最好用例子来解释,如果我们使用的是模式hello/(在最后没有美元符号), If we had instead used the pattern ^hello/(without a dollar sign at the end), then any URL starting with /hello/ would match, such as /hello/foo and /hello/bar, not just /hello/.

Similarly 类似地, if we had left off 保留 the initial caret character (i.e., hello/$), Django would match 匹配 any URL that ends with hello/, such as /foo/bar/hello/. If we had simply used hello/, without a caret or dollar sign, then any URL containing 包含 hello/ would match, such as /foo/hello/bar.Thus, 因此 we use both the caret and dollar sign to ensure 确保 that only the URL /hello/ matches   nothing more 更多, nothing less 更少.

python django 动态网页_Django创建动态网页的基础知识相关推荐

  1. python Django 连接mysql数据库创建表详细全过程

    python Django 连接mysql数据库创建表详细全过程 1,在数据库中新建一个要连接的数据库(在cmd命令行里登录数据库进行创建创建) mysql -u root -p**+密码** cre ...

  2. 学python需要什么基础知识-Python的学习,都需要具备哪些计算机基础知识?

    原标题:Python的学习,都需要具备哪些计算机基础知识? 首先 ,Python 语言可以完全从零基础学习 , 即使没有任何计算机基础.通过系统化的学习过程 , 同时也能掌握 Python 编程. 虽 ...

  3. 动态数组怎么定义_Excel VBA 数组基础知识,初学者不可不学的关键知识

    今天和大家要说的是VBA数组的基本知识点,等你学到后面就会知道,数组和字典搭配起来真的是事半功倍的啦!所以学习好数组的基本知识点也是必不可少的,基础知识有了,才能有后面的应用. 数组的基本概念 数组其 ...

  4. 静态路由与动态路由的优先级_静态路由基础知识

    静态路由是指由管理员手动配置和维护的路由.静态路由配置简单,并且无需像动态路由那样占用路由器的CPU资源来计算和分析路由更新. 静态路由的缺点在于,当网络拓扑发生变化时,静态路由不会自动适应拓扑改变, ...

  5. Django入门+实战教程+个人笔记+实时更新+基础知识 ->(个人学习记录笔记)

    文章目录 1.初识 2.登录,登录首页实现步骤 3.GET方式_登录功能 1.post请求的请求报文 2.post响应报文 3.GET和POST请求区别 4.GET请求方式 5.POST请求方式 6. ...

  6. python向量计算库教程_NumPy库入门教程:基础知识总结

    原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...

  7. python编程从入门到精通读书笔记(基础知识)

    第一部分:基础知识 学习python想要做的软件  1.开机答题软件,(电脑一开机的输入密码,改为答题,初步设定为选择题,答对了才可以进入.)  2.   第二章 2.1第一个程序:  print(& ...

  8. python的知识点运用_程序猿在Python编程中不得不使用的十二种基础知识

    Python编程中常用的12种基础知识,其中肯定有你不会的! 人生苦短,我用Python 1.正则表达式替换 目标: 将字符串line中的 overview.gif 替换成其他字符串. 人生苦短,我用 ...

  9. python 把数据写到tet_Python随身听023基础知识到底哪里用逗号?

    Python随身听,程序任我行. hi,你好,欢迎回到Python随身听,今天是周二,给大家分享各种编程基础知识. 小提示:我开发的编程入门神器PythonX正在测试中,前两期节目和公众号都有介绍,这 ...

最新文章

  1. 小区物业费信息管理系统设计c++_律师,我没有签物业合同,可以不交物业费吗?...
  2. npm的镜像替换成淘宝
  3. Win10 下使用 ionic 框架开发 android 应用之搭载开发环境
  4. 话里话外:浅谈国企绩效考核问题(二)
  5. oracle怎么格式化sql语句,Oracle sqlplus格式化数据
  6. 终端执行php,PHP命令行执行PHP脚本的注意事项总结
  7. echarts画中国地图!
  8. 电子科大820历年真题_【真题实战】电子科技大学2016计算机专业基础820真题
  9. Netty中有哪些自带的ChannelHandler?
  10. java实现一台电脑控制多台手机_涨姿势:教你用电脑远程控制多台手机!终于可以挂手机了!...
  11. 2018年下半年系统集成项目管理工程师真题及答案解析
  12. 这条命令帮我在一分钟内修改了200台远程服务器密码!
  13. 解决: error: Class declaration lacks Q_OBJECT macro. 的报错
  14. 量化策略“高股息率模型”长期有效性的实证
  15. 大型网站架构技术演进(史上最全)
  16. js实现扫雷-算法分析
  17. 接上篇手工课 材料:美女图片一张, 要求将其制成 边旋转边渐隐的魔幻图片
  18. Unity鼠标控制物体360°旋转和点击移动
  19. CS61A Lab 12
  20. 解决Cleartext HTTP traffic to 01.minipic.eastday.com not permitted

热门文章

  1. Python测试框架pytest(23)插件 - pytest-picked、pytest-lazy-fixture
  2. ajax post无效,jQuery AJAX Post无效
  3. maya2018拓扑功能实现
  4. 机械键盘 酒精大法
  5. 关于网络推广的一些心得体会
  6. 复旦大学2018--2019学年第二学期(18级)高等代数II期末考试第六大题解答
  7. linux mount u盘 exfat,CentOS 挂载 exfat 和 FAT32格式的U盘
  8. XSS漏洞利用——键盘记录
  9. 「收藏级干货」蜡烛图交易形态全解
  10. 程序员不得不学的操作系统知识(一)