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项目

python manage.py runserver 8999

D:\python\django_site\first_site>python manage.py runserver 8999

浏览器输入:127.0.0.1:8999就可以访问到django自带的欢迎页面

第一个视图

? 创建一个基于Django的页面:Hellow World

? 使用Django,页面的内容是靠view function(视图函数) 来产生,URL定
义在 URLconf 中。首先,我们先写一个Hello World视图函数。

views.py

from django.shortcuts import HttpResponse

# Create your views here.
import datetime
def first(request):
    return HttpResponse('Hellow World')

? 每个视图函数至少要有一个参数,通常被叫作request。这是一个触发这个视图、包含当前Web请求信息的对象,是类django.http.HttpRequest的一个实例。在这个示例中,我们虽然不用request做任何事情,然而它仍必须是这个视图的第一个参数。



? django‐admin.py startproject 时,该脚本会自动为你建了一份 URLconf(即 urls.py 文

件)。 默认的urls.py会像下面这个样子

urls.py

from django.contrib import admin
from django.urls import path
#添加:
from app001 import views
urlpatterns = [
    path('admin/', admin.site.urls),
    #添加:
    path('^first$/', views.first) #所有指向 URL /first/ 的请求都应由 first 这个视图函数来处理
]

? 调用 path 函数并将返回结果保存到 urlpatterns 列表。在URLconf中加入URL和view,只需增加映射URL模式和view功能(添加path函数对象)

? 运行命令行 python manage.py runserver 8999打开浏览器访问http://127.0.0.1:8000/first/ 就可以查看输出结果

Django是怎么处理请求的

? 当你通过在浏览器里敲http://127.0.0.1:8000/first/来访问Hello world消息得时候,Django在后台有些什么动作呢?
所有均开始于setting文件。当你运行python manage.py runserver,脚本将在于manage.py同一个目录下查找名为setting.py的文件。这个文件包含了所有有关这个Django项目的配置信息,均大写: TEMPLATE_DIRS, DATABASE_NAME , 等. 最重要的设置时ROOT_URLCONF,它将作为URLconf告诉Django在这个站点中那些Python的模块将被用到,创建的settings.py包含一个ROOT_URLCONF配置用来指向自动产生的urls.py. 打开文件settings.py你将看到如下:
? ROOT_URLCONF = ‘firt_site.urls‘
相对应的文件是first_site/urls.py
? 当访问 URL /first/ 时,Django 根据 ROOT_URLCONF 的设置装载 URLconf 。 然后按顺序逐个匹配URLconf里的URLpatterns,直到找到一个匹配的。 当找到这个匹配 的URLpatterns就调用相关联的view函数,并把HttpRequest 对象作为第一个参数。 正如我们在第一个视图例子里面看到的,一个视图功能必须返回一个HttpResponse。 一旦做完,Django将完成剩余的转换Python的对象到一个合适的带有HTTP头和body的Web Response(例如,网页内容)。
总结一下:

  1. 进来的请求转入/first/.
  2. Django通过在ROOT_URLCONF配置来决定根URLconf.
  3. Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目。
  4. 如果找到匹配,将调用相应的视图函数
  5. 视图函数返回一个HttpResponse
  6. Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来

第二个视图:动态视图

在view.py增加下面代码

import datetime
def current_datetime(request):
    now = datetime.datetime.now().strftime('%Y-%m-%d')
    return HttpResponse(now)

在urls.py的urlpatterns列表中增加下面代码

path('time/', current_datetime)

URL配置和松耦合

? 松耦合 原则。 简单的说,松耦合是一个 重要的保证互换性的软件开发方法。
? Django的URL配置就是一个很好的例子。 在Django的应用程序中,URL的定义和视图函数之间是松 耦合的,换句话说,决定URL返回哪个视图函数和实现这个视图函数是在两个不同的地方。 这使得 开发人员可以修改一块而不会影响另一块。例如,考虑一下current_datetime视图。 如果我们想把它的URL 从原来的 /time/ 改变到 /currenttime/ ,我们只需要快速的修改一下URL配置即可, 不用担心这个函数的内部实现。 同样的,如果我们想要修改这个函数的内部实现也不用担心会影响 到对应的URL。

第三个视图:动态URL

在我们的current_datetime 视图范例中,尽管内容是动态的,但是URL ( /time/ )是静态的。 在 大多数动态web应用程序,URL通常都包含有相关的参数。 举个例子,一家在线书店会为每一本书提供一个URL,如:/books/243/、/books/81196/。

/time/plus/1/ 显示当前时间+1个小时的页面 /time/plus/2/ 显示当前时间+2个小时的页面 /time/plus/3/ 显示当前时间+3个小时的页面,以此类推。

urlpatterns列表增加:

re_path(r'^time/plus/(\d+)/$', views.hour_ahead),

增加一个分组,对应的视图函数就需要增加一个参数

def hour_ahead(request,offset):
    dt = datetime.datetime.now()+datetime.timedelta(hours=int(offset))
    now = dt.strftime('%H:%M:%S')
    return HttpResponse(now)

这里命名变量为offset ,也可以任意命名它,只要符合Python 的语法。变量名是无关紧要的,重要的是它的位置,它是这个函数的第二个参数 (在request 的后面)。 还可以使用关键字来定义它,而不是用位置。对分组进行命名

from django.urls import path,re_path
 #新版本2.2.6 路由使用path(),无需要无需用^和$,需要用到正则表达式使用re_path()
 #2.0之前使用url()
re_path(r'^time/plus/(?p<offset>\d+)/$', views.hour_ahead),

原文地址:https://www.cnblogs.com/notfind/p/11650178.html

时间: 2024-07-30 08:51:02

Django框架1——视图和URL配置的相关文章

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

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

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

Django框架之视图

Django框架之视图层 什么是视图函数 视图函数,属于Django的视图层,默认定义在views.py文件中,是用来处理web请求信息以及返回响应信息的函数.并且这里的视图函数并不仅仅指代函数,也包括类. 请求对象 Django将http协议请求报文中的请求行.首部信息.内容主体封装到了HttpRequest对象中.将HttpRequest对象当做参数传给视图函数中去,在视图函数中,通过访问该对象的属性便可以提取http协议的请求数据 常用属性 method 获取请求方式 GET 获取GET请

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

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

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

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

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框架之---视图

视图 视图的功能 视图负责接受Web请求HttpRequest,进行逻辑处理,返回Web响应HttpResponse给请求者. 使用视图的过程 视图就是一个python函数,被定义在"应用/views.py"文件中. 使用视图时需要进行两方面操作,两个操作不分先后. 1)在"应用/views.py"中定义视图. 在booktest/views.py中定义视图函数index: def index(request): return HttpResponse("