• [python][django学习篇][7]设计博客视图(1)


    1上网的流程:

    • 打开浏览器,输入网址(http://zmrenwu.com/
    • 浏览器根据输入网址,完成以下几件事:1识别服务器地址,2将用户的浏览意图打包成一个http请求,发送给服务器,等待服务器响应请求
    • 服务器接收到请求后,根据请求从数据库查询,取出数据,并将这些数据嵌入到html中,打包成http响应,返回给浏览器
    • 浏览器接收到响应,解读响应,把html文档解析并显示给用户

      从上面的流程来看,django就是一个服务器,其主要解决问题:接收浏览器发送的请求,返回响应给浏览器

      从而,会产生几个疑问:

    • django如何接收http请求
    • django如何处理这个请求
    • django如何生成响应

     2设计简单hello 视图,来了解django如何解决上面的三个问题

    1. 绑定URL与视图函数
      •  Django 需要知道当用户访问不同的网址时,应该如何处理这些不同的网址(即所说的路由)。Django 的做法是把不同的网址对应的处理函数写在一个 urls.py 文件里,当用户访问某个网址时,Django 就去会这个文件里找,如果找到这个网址,就会调用和它绑定在一起的处理函数(叫做视图函数)。
      • 在blog新建一个urls.py
        • # coding=utf8
          
          
          from django.conf.urls import url
          
          from .import views
          
          urlpatterns = [
              url(r"^$", views.index, name="index"),
          ]

          首先从 django.conf.urls 导入了 url 函数,又从当前目录下导入了 views 模块。然后把网址和处理函数的关系写在了 urlpatterns 列表里

          绑定关系的写法:

          • 调用 url 函数(第一个参数是网址,第二个参数是处理函数),另外我们还传递了另外一个参数 name,这个参数的值将作为处理函数 index 的别名,这在以后会用到。

            第一个参数网址: 是正则表达式,Django 会用此正则表达式去匹配用户实际输入的网址(去掉http,域名,端口后),如果匹配成功,就会调用其后面的视图函数做相应的处理。

            比如本地开发服务器的域名是 http://127.0.0.1:8000,那么当用户输入网址 http://127.0.0.1:8000 后,Django 首先会把协议 http、域名 127.0.0.1 和端口号 8000 去掉,此时只剩下一个空字符串,而 r'^$' 的模式正是匹配一个空字符串(这个正则表达式的意思是以空字符串开头且以空字符串结尾),于是二者匹配,Django 便会调用其对应的 views.index 函数。

          • 注意:在项目根目录的 blogproject 目录下(即 settings.py 所在的目录),原本就有一个 urls.py 文件,这是整个工程项目的 URL 配置文件。而我们这里新建了一个 urls.py 文件,且位于 blog 应用下。这个文件将用于 blog 应用相关的 URL 配置。不要把两个文件搞混了。
    2. 编写视图函数blog/views.py
      • urls.py设置的视图函数为index(),views.py内容如下
        • # coding=utf8
          
          
          from django.shortcuts import render
          from django.http import HttpResponse
          
          
          # Create your views here.
          
          def index(request):
              return HttpResponse("欢迎访问我的博客首页")
      • 上面说过,web服务器:接收请求,处理请求,返回响应, index两行代码完美解析这三个功能:
        • 首先接收了request参数,request就是django封装好的Http请求,他说HttpRequest的一个实例
        • 返回一个响应,这个响应是HttpResponse的一个实例,传递了一个自定义的字符串参数
        • 可以预计浏览器显示给用户:欢迎访问我的博客首页
    3. 配置项目(工程)URL(不是应用URL)
      • 还差最后一步了,我们前面建立了一个 urls.py 文件,并且绑定了 URL 和视图函数 index但是 Django 并不知道。Django 匹配 URL 模式是在 blogproject 目录(即 settings.py 文件所在的目录)的 urls.py 下的,所以我们要把 blog 应用下的 urls.py 文件包含到 blogprojecturls.py 里去
      • 编写blogprojecturls.py,内容如下
        • - from django.conf.urls import url
          + from django.conf.urls import url, include
          from django.contrib import admin
          
          urlpatterns = [
              url(r'^admin/', admin.site.urls),
          +   url(r'', include('blog.urls')),
          ]

          这里- 表示删除一行,+增加一行,其实就是注释里面的:

          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'))
        • 理解是怎么将应用blog/url增加进来的,调用了一个include函数,传递“blog.urls”,实现将应用blog/urls.py的添加进来
        • url(r'', include('blog.urls') )是将空格和blog/urls.py里面的url拼接起来,如果是url(r'blog', include('blog.urls'),而我们blog/urls.py里面的url为:
          • url(r"^$", views.index, name="index"),因此拼接起来网址:http://127.0.0.1:8000/blog/
              
    4. 运行项目:进入manage.py目录,python manage.py runserver打开web服务器,浏览器输入网址:http://127.0.0.1:8000/
    5. 可以看到页面显示:欢迎来到我的博客首页
  • 相关阅读:
    链表和顺序表的区别
    MongoDB安装了以后,服务无法启动的问题
    retrying模块
    Scrapy 动态创建 Item
    pyhon把程序打包为whl
    记录有个关于使用matplotlib库绘图遇到的坑
    读取Polygon多边形的顶点坐标
    Scatter 散点图
    tick 能见度
    Annotation 标注
  • 原文地址:https://www.cnblogs.com/liuzhipenglove/p/7339760.html
Copyright © 2020-2023  润新知