• Django框架之路由和视图的配置以及Path转换器的使用


    URL和视图函数

    URL即统一资源定位符,用来标识互联网上某个资源的地址
    视图函数是用于接受一个浏览器亲求并通过HttpResponse对象返回响应的函数,此函数可以接受浏览器请求并根据业务逻辑返回相应的响应内容给浏览器。

    配置路由和视图

    下面配置路由和视图来创建一个hello world页面
    首先创建视图函数,我们可以创建一个views.py文件,然后所有的视图函数都写在里面,views.py的代码如下:

    from django.http import HttpResponse
    def page_2022_view(request):
        html = "<h1>hello world!</h1>"
    return HttpResponse(html)
    
    • 1
    • 2
    • 3
    • 4

    其次,需要在urls.py中配置一个路由

    from django.contrib import admin
    from django.urls import path
    //导入视图函数
    from . import views
    urlpatterns = [
        path('admin/', admin.site.urls),
        # http://127.0.0.1:8000/page/2022/
        path("page/2022/", views.page_2022_view)
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    因为默认是127.0.0.1:8000因此配置好的访问地址为http://127.0.0.1:8000/page/2022/
    配置好之后,运行服务器,浏览器中输入地址,可以看到以下页面:
    在这里插入图片描述
    说明路由和视图配置成功!

    Path转换器

    如果我们需要创建100个页面,其中的内容只需要微调,那么如果我们复制粘贴100次路由和视图然后微调,也不是不可以,但是这样就有点呆了。这里path转换器就可以帮助我们,相当于传参数进去自动配置对应的路由,从而获得我们需要的效果。

    在这里插入图片描述
    path转换器的类型简介

    举两个例子就懂了。

    实例1

    首先来个简单的。
    输入对应的路由内容,能够跳转到对应的网页并且网页上显示对应的路由内容。

    首先,配置路由
    urls.py如下:

    from django.contrib import admin
    from django.urls import path
    from . import views
    urlpatterns = [
        # http://127.0.0.1:8000
        path('', views.index_page),
        # http://127.0.0.1:8000/page/2003/
        path("page/2022/", views.page_2022_view),
    
        path("page/<str:pg>", views.pagen_view) # 使用path转换器转换路由
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    其中<str:pg >就是匹配page/后面的字符串内容,其匹配的值会保存在pg这个变量中。

    再配置视图函数view.py如下:

    from django.http import HttpResponse
    
    def pagen_view(request, pg):  # 对应path转换器的视图
        html = "网页内容为 %s" % (pg)
        return HttpResponse(html)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    pg就是匹配到的参数,传入视图,然后在网页中展示出来。

    配置完之后,启动服务器

    page/后面随便输入一些,都可以匹配到对应网页,并且在网页中显示出来
    在这里插入图片描述
    在这里插入图片描述

    实例2

    要求制作一个简易计算器,在路由中输入,在页面输出计算结果。

    看懂了实例1,这个也就信手拈来了。

    首先配置路由urls.py:

    from django.contrib import admin
    from django.urls import path
    from . import views
    urlpatterns = [
        path("page/<int:a>/<str:op>/<int:b>", views.cal_view)
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    a、op、b分别对应匹配的整数、字符串、整数,获取对应值之后只需要在视图函数操作一下就可以了。

    再配置视图函数views.py:

    from django.http import HttpResponse
    def cal_view(request, a, op, b):
        html = ""
        if op == "+":
            html = str(a+b)
        elif op == "-":
            html = str(a-b)
        elif op == "*":
            html = str(a*b)
        elif op == "/":
            html = str(a/b)
        else:
            html = "遇到问题喽"
        
        return HttpResponse(html)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    配置完成后,运行服务器访问页面:
    http://127.0.0.1:8000/page/60/+/90
    结果如下:
    在这里插入图片描述
    可见简易计算器成功完成。

    django还提供了比较高级的re_path(),即用正则的Path转换器,这个转换器匹配的模板更加精准,需要用到正则表达式,因此用起来也相对复制,因为目前我还没用到,就不再过多阐述了。

  • 相关阅读:
    从零开始:如何通过美颜SDK构建自己的直播美颜工具
    【Kubernetes】Kubernetes的污点和容忍度
    想学软件测试,怎么开始?
    kafka,zookeper的搭建 消息队列---------基于linux
    java中 基础 知识 逻辑控制
    leetcode mysql 184. 部门工资最高的员工
    一文了解如何源码编译Rainbond基础组件
    对象映射的那些事儿及MapStruct入门
    js中内存泄漏的几种情况
    pytorch使用LSTMCell层定义LSTM网络结构
  • 原文地址:https://blog.csdn.net/qq_52785473/article/details/125456409