django中url和视图函数path re_path views.py

目录

  • url的定义
  • url的格式
  • django中的url
  • django中的创建自己的url
  • django访问测试
  • django中的path动态
  • django中的path动态案例
  • django中的path动态类型
  • django中的path动态案例-计算器
  • django的正则路由re_path()

url的定义

url 统一资源定位符
url 用来表示互联网上某个资源的地址

大家都知道 互联网上 我们是不是都是打开浏览器
输入要查询的数据 例如 www.baidu.com
其实 www.baidu.com 就是一个 url 表示你要获取 www.baidu.com 服务器的资源
于是你就获得了百度的官网 在哪里在输入url 查询别的内容

url的格式

在这里插入图片描述

https://www.baidu.com:443/s?wd=1212&rsv_spt=1

https 协议
www.baidu.com  主机ip
443 端口
/s  文件目录
wd=1212 查询参数
这里可能没有#  但是#在htmlcss的锚点知识中能改了解过
定位到页面的某个id位置

django中url和视图函数path re_path views.py_第1张图片

django中的url

django的url 实在 urls.py文件中的

from django.contrib import admin
from django.urls import path

urlpatterns = [
	#匹配 127.0.0.1/admin
	#admin.site.urls 处理的函数
    path('admin/', admin.site.urls),
]

django中的创建自己的url

例如我们访问 127.0.0.1/app/page

  1. 第一步找到urls.py
 #添加url 127.0.0.1/app/page
#注意不能/  /app/page  不行的
path('app/page', admin.site.urls),
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
    #添加url 127.0.0.1/app/page
    #注意不能/  /app/page  不行的
    path('app/page', admin.site.urls),
]

注意不能/开头
django中url和视图函数path re_path views.py_第2张图片
2. 配置处理请求的函数
处理的函数都放在了 views.py文件下
找不到的话就新建一个
views.py文件内容

#HttpResponse 进行http响应
from django.http import HttpResponse

#处理函数 也成为了视图函数  
#request 是固定的参数 是请求头的信息
def send_data(request):
    html = "

我爱你 你敢反过来么

"
return HttpResponse(html)
  1. 把view.py的函数挂载到对应的url上面
    进入urls.py
from . import views
#注意  views.send_data 不能加()
urlpatterns = [
    path('admin/', admin.site.urls),
    path('app/page', views.send_data),
]

以上就完成了url的视图处理

django访问测试

django中url和视图函数path re_path views.py_第3张图片

django中的path动态

如果我们要匹配
/page/1
/page/2
/page/3

/page/100
难道要写100多个路由么 不用的 这就是动态路由

/page/< int:pagenumber >

django中的path动态案例

  1. 定义动态路由
 path('app/page/', views.send_data),
  1. 定义视图函数
def send_data2(request, pagen):
    html = "

这是第{0}页

"
.format(pagen) return HttpResponse(html)
  1. 路由和视图相互挂关联
from . import views

path('app/page/', views.send_data2),

pagen匹配的值   会成为一个参数 传递给views.send_data2的函数当中

  1. 测试

django中url和视图函数path re_path views.py_第4张图片

django中的path动态类型

除了int以外还有

<int : value>数字 
/app/page/<int : value>
/app/page/1

<str : value>字符串  
/app/page/<str : value>
/app/page/one

<slug : value > 匹配字母 数字 连字符 下划线构成的数据  
/app/page/<slug : value >
/app/page/who-are-you

<path : value>匹配某段路径  
/app/page/<path : value >
/app/page/a/b/c

django中的path动态案例-计算器

/a/操作符/b 计算ab的操作

  1. 创建路由
 path('//', views.page_add),
  1. 创建视图函数
def page_add(request, x, has, y):
    result = 0
    if has == '+':
        result = float(x) + float(y)
    elif has == '-':
        result = float(x) - float(y)
    elif has == '*':
        result = float(x) * float(y)
    elif has == '/':
        result = float(x) / float(y)
    else:
        result = "error"

    html = "

{0}{1}{2}={3}

"
.format(x, has, y, result) return HttpResponse(html)
  1. url和视图相互挂载
 path('//', views.page_add),
  1. 测试
    django中url和视图函数path re_path views.py_第5张图片

django的正则路由re_path()

引入在urls.py

from django.urls import path, re_path

re_path(正则表达式,视图函数,名字)
使用
1.定义url

re_path(r'app/(?P\d*)', views_xxx),
  1. 定义函数
def send_get(request, x):
    html = "

正则{0}

"
.format(x) return HttpResponse(html)
  1. url和视图相互挂载
re_path(r'app/(?P\d*)', views.send_get),

(?P<x>\d*)  匹配 \d的数值  当做参数传递给send_get 函数
核心就是 \d*的正则表达式
<x>  吧匹配的值给x
(?P<>)  分组的模板 
  1. 测试

django中url和视图函数path re_path views.py_第6张图片

希望以上内容对你有所帮助

你可能感兴趣的:(django,django,python,后端)