Django框架之路由和视图的配置以及Path转换器的使用
Posted Icy Hunter
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)
其次,需要在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)
]
因为默认是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转换器转换路由
]
其中<str:pg >就是匹配page/后面的字符串内容,其匹配的值会保存在pg这个变量中。
再配置视图函数view.py如下:
from django.http import HttpResponse
def pagen_view(request, pg): # 对应path转换器的视图
html = "网页内容为 %s" % (pg)
return HttpResponse(html)
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)
]
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)
配置完成后,运行服务器访问页面:
http://127.0.0.1:8000/page/60/+/90
结果如下:
可见简易计算器成功完成。
django还提供了比较高级的re_path(),即用正则的Path转换器,这个转换器匹配的模板更加精准,需要用到正则表达式,因此用起来也相对复制,因为目前我还没用到,就不再过多阐述了。
以上是关于Django框架之路由和视图的配置以及Path转换器的使用的主要内容,如果未能解决你的问题,请参考以下文章