url 统一资源定位符
url 用来表示互联网上某个资源的地址
大家都知道 互联网上 我们是不是都是打开浏览器
输入要查询的数据 例如 www.baidu.com
其实 www.baidu.com 就是一个 url 表示你要获取 www.baidu.com 服务器的资源
于是你就获得了百度的官网 在哪里在输入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 实在 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),
]
例如我们访问 127.0.0.1/app/page
第一步找到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),
]
注意不能/开头
2. 配置处理请求的函数
处理的函数都放在了 views.py文件下
找不到的话就新建一个
views.py文件内容
#HttpResponse 进行http响应
from django.http import HttpResponse
#处理函数 也成为了视图函数
#request 是固定的参数 是请求头的信息
def send_data(request):
html = "我爱你 你敢反过来么
"
return HttpResponse(html)
from . import views
#注意 views.send_data 不能加()
urlpatterns = [
path('admin/', admin.site.urls),
path('app/page', views.send_data),
]
以上就完成了url的视图处理
如果我们要匹配
/page/1
/page/2
/page/3
…
/page/100
难道要写100多个路由么 不用的 这就是动态路由
/page/< int:pagenumber >
path('app/page/' , views.send_data),
def send_data2(request, pagen):
html = "这是第{0}页
".format(pagen)
return HttpResponse(html)
from . import views
path('app/page/' , views.send_data2),
pagen匹配的值 会成为一个参数 传递给views.send_data2的函数当中
除了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
/a/操作符/b 计算ab的操作
path('//' , views.page_add),
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)
path('//' , views.page_add),
引入在urls.py
from django.urls import path, re_path
re_path(正则表达式,视图函数,名字)
使用
1.定义url
re_path(r'app/(?P\d*)' , views_xxx),
def send_get(request, x):
html = "正则{0}
".format(x)
return HttpResponse(html)
re_path(r'app/(?P\d*)' , views.send_get),
(?P<x>\d*) 匹配 \d的数值 当做参数传递给send_get 函数
核心就是 \d*的正则表达式
<x> 吧匹配的值给x
(?P<>) 分组的模板
希望以上内容对你有所帮助