Django 1.8_视图和URL配置

前情提要

  学习了如何创建django项目,运行开发django服务器,并了解了mvc模式。

内容

  VIEW

  URL

    正则表达式

    错误解析与寻求帮助

  • hello world.html
  • dynamic_date.html
  • dynamic_date_offset.html 

  Django处理请求的过程

Helloword

  创建一网页,打开即显示helloworld。

  其中网页内容由视图生成,并配置URL。

    在mysite/mysites下创建views.py并编辑

1 from django.http import HttpResponse
2
3 def hello(request):
4     return HttpResponse(‘HELLO, WORLD!‘)

views.py

 1 from django.conf.urls import include, url
 2 # include,导入另一个url的配置模块
 3 # url,使用正则表达式模式匹配浏览器中的url,并映射到django项目的某个模块上
 4 from django.contrib import admin
 5 from mysite import views
 6
 7 urlpatterns = [
 8     url(r‘^admin/‘, include(admin.site.urls)),
 9     url(r‘^hello/$‘, views.hello),
10 ]

urls.py

dynamic_date

 1 from django.http import HttpResponse
 2 import datetime
 3
 4 def hello(request):
 5     return HttpResponse(‘HELLO, WORLD!‘)
 6
 7 # new add
 8 def current_datetime(request):
 9     now = datetime.datetime.now()
10     html = "It‘s now %s." % now
11     return HttpResponse(html)

views.py

 1 from django.conf.urls import include, url
 2 # include,导入另一个url的配置模块
 3 # url,使用正则表达式模式匹配浏览器中的url,并映射到django项目的某个模块上
 4 from django.contrib import admin
 5 from mysite import views
 6
 7 urlpatterns = [
 8     url(r‘^admin/‘, include(admin.site.urls)),
 9     url(r‘^hello/$‘, views.hello),
10     # new add
11     url(r‘^time/$‘, views.current_datetime)
12 ]

urls.py

dynamic_date_offset

 1 from django.conf.urls import include, url
 2 # include,导入另一个url的配置模块
 3 # url,使用正则表达式模式匹配浏览器中的url,并映射到django项目的某个模块上
 4 from django.contrib import admin
 5 from mysite import views
 6
 7 urlpatterns = [
 8     url(r‘^admin/‘, include(admin.site.urls)),
 9     url(r‘^hello/$‘, views.hello),
10     url(r‘^time/$‘, views.current_datetime),
11     # new add
12     url(r‘^time/plus/(\d{1,2})/$‘, views.hours_ahead) # 限制使用一个或者两个数字,最大偏移为99
13 ]

urls.py

 1 from django.http import HttpResponse, Http404
 2 import datetime
 3
 4 def hello(request):
 5     return HttpResponse(‘HELLO, WORLD!‘)
 6
 7 def current_datetime(request):
 8     now = datetime.datetime.now()
 9     html = "It‘s now %s." % now
10     return HttpResponse(html)
11
12 # new add
13 def hours_ahead(request, offset):
14     try:
15         offset = int(offset) # 捕捉url中的偏移量数字,为unicode编码,转化成数字,后续用
16     except ValueError:
17         raise Http404()
18     dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
19     html = "In %s hours, it will be %s" %(offset, dt)
20     return HttpResponse(html)

views.py

Note: URL 和视图之间是松耦合的,即可以通过多个url定位到同一个视图,改变一个对另一个影响很小。

正则表达式

  .  单个字符

   \d  单个数字

  [A-Z]  大写字母中的某一个

  [a-z]  小写字母中的某一个

  [A-Za-z]  不区分大小写的某一个字母

+    一个或者多个前述表达式  \d+

  [^/]+    一个或多个字符,直到遇到斜线

  ?    零个或者一个前述表达式  \d?

   *    零个或者多个前述表达式  

  {1,3}  介于一个到三个之间前述表达式

Django处理请求的过程

  点击url,后显示页面,django做了什么

  1. 请求/hello/
  2. Django查看ROOT_URLCONF设置,找到根URL配置
  3. Django比较URL配置中的各个URL模式,找到与/hello/匹配的那个
  4. 如果找到匹配的模式,调用对应的视图函数
  5. 视图函数返回一个HttpResponse对象
  6. Django把HttpResponse对象转化正确的HTTP响应,得到网页

错误解析和寻求帮助

  页面顶部是异常关键信息: 异常类型和消息,抛出异常的文件以及所在的行号

  Trackback标题旁边有“Switch to copy-and-paste view”文本。点击后,就会切换到另一个版本,以便分享给别人,寻求帮助。

原文地址:https://www.cnblogs.com/dignity/p/9941045.html

时间: 2024-08-02 23:29:34

Django 1.8_视图和URL配置的相关文章

Django笔记 —— 高级视图和URL配置

最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其实我的所有笔记都是),并不会过于详细的讲解.因此如果有大家看不明白的地方,欢迎在我正版博客下留言,有时间的时候我很愿意来这里与大家探讨问题.(当然,不能是简简单单就可以百度到的问题-.-) 我所选用的教材是<The Django Book 2.0>,本节是第八章,高级视图和URL配置. 在基础部分

Django框架1——视图和URL配置

三个命令 1.创建一个django项目 在cmd中:django-admin.py startproject project_name D:\python\django_site>django-admin startproject first_site 2.创建应用 python manage.py startapp app_name D:\python\django_site\first_site>python manage.py startapp app001 3.运行django项目 p

视图的URL配置,找不到我设置的第一个Page

问题:视图的URL配置,找不到我设置的第一个Page 我的代码如下: 结果访问/test/时说找不到这个page 原因:patterns方法的参数有两个,一个是prefix,一个是参数元祖,详见下图,因为我的patterns里少加了一个空的'',它将我写的第一个url单过prefix参数了. 解决办法:在patterns中先加入一个参数'',如下图:

Django -- 视图和URL配置

一个人行走的范围,就是他的世界:    -- 北岛<青灯> 一个人吟唱的语调,就是他的生活.    -- 小Q<小曲> ------------------------------------------------------------------------------------------------- 前一节我们建立了一个Django项目,这一节我们来了解视图和url的关系: [第一个视图 根目录] 当我们搭建好django时,urls.py内没有url,我们会看到一个

django book学习笔记——视图和URL配置

1.视图 一个视图就是Python的一个函数,每个视图函数至少要有一个参数,通常被叫作request. 这是一个触发这个视图.包含当前Web请求信息的对象,是类django.http.HttpRequest的一个实例.它返回一个HttpResponse实例.为了使一个Python的函数成为一个Django可识别的视图,它必须满足这两个条件.(也有例外) 例: from django.http import HttpResponse def hello(request):         retu

Django高级视图和URL配置

URLconf 技巧 URLconf没什么特别的,就象 Django中其它东西一样,它们只是 Python代码.你可以在几方面从中得到好处,正如下面所描述的. 流线型化(Streamlining)函数导入 看下这个 URLconf,它是建立在第三章的例子上: from django.conf.urls.defaults import * from mysite.views import current_datetime, hours_ahead, hours_behind, now_in_chi

django1.8高级视图和URL配置读书笔记

一.在url配置中可以通过导入视图函数来将url模式和对应的函数对象进行映射,也可以通过字符串的形式进行映射.字符串包含应当是模块名.函数名的组合例如: 之前: from mysite import views urlpatterns = patterns('', (r'^hello/$', views.hello), (r'^time/$', views.current_datetime), (r'^time/plus/(d{1,2})/$', views.hours_ahead), ) 现在

Django:视图和URL配置

一.视图 1.在mysite文件夹下.创建views.py文件(文件名称没有特别的要求): from django.http import HttpResponse def hello(request): return HttpResponse("Hello world") 2.改动mysite文件夹下的urls.py文件: from django.conf.urls import url from django.contrib import admin from mysite.vie

django book学习笔记——高级视图和URL配置

1.URLconf技巧 1).流线型化函数导入 在 URLconf 中的每一个入口包括了它所联系的视图函数,直接传入了一个函数对象. 这就意味着需要在模块开始处导入视图函数.但随着 Django 应用变得复杂,它的 URLconf 也在增长,并且维护这些导入可能使得管理变麻烦. 为了避免这种麻烦,Django 提供了一种方法可以在 URLconf 中为某个特别的模式指定视图函数: 你可以传入一个包含模块名和函数名的字符串,而不是函数对象本身.例如: from django.conf.urls.d