Django基础--视图和URL配置

视图和URL

  使用django,你会发现,页面的内容是靠view function(视图函数)来产生的,URL则定义在URLconf中。那么下面我们来看一个最简单的视图。

第一份视图函数

  在这里,我们创建一个最简单的视图函数,就让它之间给前端页面返回一个状态值。

from django.http import HttpResponse

def first_view(request):
    return HttpResponse("this is the first view.")

  这里,我们要注意的地方有几个,第一个是,视图函数的参数是request,这是一个必须的参数。每个视图至少都要有一个参数,通常被称为request,这是一个触发这个视图,包含当前web请求信息的对象,是类django.http.HttpRequest的一个实例,在这个例子中,我们虽然用不上reqeust,但是这个参数是必须的。第二个是,这个函数返回的是一个HttpResponse对象,这个对象包含文本"this is the first view."。第三个是,要特别注意的是,一个视图就是python的一个函数,这个函数的第一个参数request的类型是HttpRequest,它返回一个HttpResponse实例,为了是一个python函数成为django能识别的视图,目前来看必须满足这两个条件。 

运行python manage.py runserver

  你会发现你看到的是Django默认的欢迎页面,而不是你刚刚写的视图返回的那句话。这是因为我们的项目还没对我们写的视图产生一定的关联,这时候我们需要通过URL来告诉Django这个视图的存在,URLconf的存在就是为了绑定视图函数和URL。

  URLconf就像是Django所支撑网站的目录。它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表。就是以这种方式告诉Django,用这个URL来调用相应的视图函数。URLconf就是Django中的urls.py文件。

  让我们来看一下,urls.py文件:  

from django.conf.urls import url
from your_app import views
urlpatterns
= [ url(r'^$', views.first_view), ]

  这里要注意的地方有:1.Django在检查URL模式之前,会移除每一个申请的URL开头的斜杠(/),这意味着我们为视图函数写URL模式不用写斜杠。2:url()里面是一个元组,前面是匹配的规则和定义好的URL,后面是通过这个URL可以找到并调用哪个视图函数。3:我们把first_view函数作为一个对象传递,而不是调用它,这是python的一个重要特性,函数是一级对象(first-class object),也就是说你可以像传递其他变量一样传递它们。

 正则表达式

  正则表达式是通用的文本模式匹配的方法,Django URLconf允许你使用任意的正则表达式来做强力的URL映射,这里我们来说一下基本的一些语法。

符号                                匹配


.(dot)                        任意单一字符
\d                            任意一位数字  
[A-Z]                         A-Z中任意一个字符(大写)
[a-z]                         a-z中任意一个字符(小写)
[A-Za-z]                      a-z中任意一个字符(不区分大小写)
+                  匹配一个或多个(例:\d+匹配一个或多个数字字符)
[^/]+               一个或多个不为/ 的字符
?                 零个或一个之前的表达式(例:\d?匹配零个或一个数字)
*                 匹配零个或更多(例:\d*匹配0个或更多数字字符)
{1,3}              介于1个或3个(包含)之前的表达式(例:\d{1,3}匹配一个或两个或三个数字)

让我们来总结一下:

  一个视图功能必须返回一个HttpResponse(目前为止),一旦做完,Django将完成转换的python对象放到一个合适的带有HTTP头和body的web response中(例如,网页内容)

  1.进来的请求转入url进行匹配

  2.Django根据ROOT_URLCONF配置来决定跟URLconf

  3.Django在URLconf中的所有URL模式中,查找到第一个匹配的url

  4.如果找到,将调用相应的视图函数

  5.视图函数返回一个HttpResponse对象

  6.Django转换HttpResponse为一个适合的HTTP response,以web page显示出来

URL配置和松耦合

  Django和URL配置背后的哲学:松耦合原则。简单的说,松耦合是一个重要的保证互换性的软件开发方法。

  Django的URL配置就是一个很好的例子,在Django的应用程序中,URL的定义和视图函数之间是松耦合的,换句话说,决定URL返回哪个视图函数和实现的这个视图函数是在两个不同的地方。这使得开发人员可以修改一块而不影响另一块。  

  

posted @ 2019-08-05 17:03  BackEndJT  阅读(202)  评论(0编辑  收藏  举报