zoukankan      html  css  js  c++  java
  • 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返回哪个视图函数和实现的这个视图函数是在两个不同的地方。这使得开发人员可以修改一块而不影响另一块。  

      

  • 相关阅读:
    BC高精确度函数使用。
    thinkPHP中_initialize方法实例分析
    MySQL中concat函数
    使用docker打造spark集群
    zhihu spark集群,书籍,论文
    Windows下安装使用curl命令
    数据可视化的优秀入门书籍有哪些,D3.js 学习资源汇总
    2015互联网+影响力报告发布
    The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    centos linux中怎么查看和修改计算机名/etc/sysconfig/network
  • 原文地址:https://www.cnblogs.com/juteng/p/11304110.html
Copyright © 2011-2022 走看看