怎么在百度搜索自己的网站,在电脑上建设个人网站,wordpress主题 胖子马,最近发生的重大新闻Django——路由
1、路由分发
可以在每个应用中创建一个 urls.py 进行在该应用中的路由匹配。
# include 在根目录路由中对应用的路由进行分发
# 对 UrlApp 应用分发一个 路由配置
path(urlapp/ , include(UrlApp.urls)),
path(urlapp2/ , include(UrlApp2.urls))2、匹配路由…Django——路由
1、路由分发
可以在每个应用中创建一个 urls.py 进行在该应用中的路由匹配。
# include 在根目录路由中对应用的路由进行分发
# 对 UrlApp 应用分发一个 路由配置
path(urlapp/ , include(UrlApp.urls)),
path(urlapp2/ , include(UrlApp2.urls))2、匹配路由
1、使用正则表达式
re_path 方法是使用正则定义 url
在需要对应用户的数据进行验证的时候会使用正则表达式匹配路由
# 使用正则表达式匹配路由的时候必须匹配开头以及结尾(^正则表达式/$)
re_path(r^[A-Z0-9]/$ , views.re_views),2、URL参数传递
在 path 解析 url 中携带的参数使用 来获取路由中对应位置的数据。url接收到这个参数之后会传递给对应关系的视图。
# 获取 url 中的参数
path(demo/urldata/ , views.get_url_data),def get_url_data(request , urldata):return HttpResponse(f从 url 中获取到的参数为 {urldata})url 映射中的 path 和 re_path 方法可以传入第三个参数这个参数会作为请求的附加数据在项目中这个附加数据会一起传递给对应的视图函数。
这个附加数据必须以字典的形式写入
# 在 url 映射方法中携带附加数据
path(extra/ , views.extra , {age:27}),path(default/ , views.default_data),
path(default/data/ , views.default_data),def extra(request , age):return HttpResponse(f获取 url 映射方法中的附加数据{age})def default_data(request , data369):# 当匹配的 url 有获取到同名的参数的情况该默认数据会被覆盖。return HttpResponse(f从 url 中获取到的参数为 {data})3、路由转换器
转换器的本质上也是使用正则进行匹配
# 转换器写法转换器名称:参数名
# int: 匹配0以及正整数。获取到的数据会被解析为int类型
path(int/int:data/ , views.int_view),
# str : 匹配除了 URl 分隔符(/) 之外的非空字符串
path(str/str:data/ , views.str_view),
# path : 匹配任意非空字符
path(path/path:data/ , views.path_view),
# slug: 匹配字母 数字 下划线 横杆组成的字符串
path(slug/slug:data/ , views.slug_view),def int_view(request , data):print(type(data))return HttpResponse(f使用 int 转换器 接收到的数据为{data})def str_view(request , data):return HttpResponse(f使用 str 转换器 接收到的数据为{data})def path_view(request , data):return HttpResponse(f使用 path 转换器 接收到的数据为{data})def slug_view(request , data):return HttpResponse(f使用 slug 转换器 接收到的数据为{data})3、反向解析路由
在 html 模板中用反向解析获取访问视图完整 URl 路径 需要给 url定义一个名称(给 url 起别名)
在 html 模板中反向解析路由的格式 {% url URL的模式名称 参数%}
body
a href/urlapp2/index/点击开奖/abr
a href{% url num %}点击开奖,无奖竞猜/a
a href{% url name_data 尔康%}不要点击/a
/bodypath(html/ , views.html_view),
path(index/ , views.index),
path(num/ , views.number_view , namenum),
path(name/data/ , views.data_view , namename_data),def index(request):return HttpResponse(我不好)def html_view(request):return render(request , UrlDemo.html)def number_view(request):number randint(136 , 569)return HttpResponse(f中奖号码为{number})def data_view(request , data):return HttpResponse(f{data} 是这个直播间最帅的)在后端视图中解析路由 reverse(url模式名称)
def text(request):# 导入 reverse 解析路由方法return HttpResponse(f视图解析路由为{reverse(num)})def redirect_reverse(request):# return redirect(reverse(num))# url 中的 name 解析名称可以直接在 redirect 中直接使用return redirect(num)def text_data(request , data):# reverse(url名称 args[参数]/kwargs{参数})# return HttpResponse(f视图解析路由为{reverse(name_data , args[叶晓春])})return HttpResponse(f视图解析路由为{reverse(name_data , args[data])})path(text/ , views.text),
path(demo/ , views.redirect_reverse),
path(text_data/ , views.text_data),
path(text_data/data/ , views.text_data),4、url的应用名称空间
在 应用的 urls.py 文件中 定义一个 app_name 的属性
# 定义当前应用的 url 应用名称空间
app_name app2!--当后端给 url 定义了应用名称空间之后在 html 中进行反向解析的时候必须指定到那一个应用名称空间下查找{# {% url url应用名称空间url名称 参数%} #}
--
a href{% url app2:num %}点击开奖,无奖竞猜/a
a href{% url app2:name_data 尔康%}不要点击/adef text(request):# 导入 reverse 解析路由方法return HttpResponse(f视图解析路由为{reverse(app2:num)})def redirect_reverse(request):# return redirect(reverse(num))# url 中的 name 解析名称可以直接在 redirect 中直接使用return redirect(app2:num)def text_data(request , data):# reverse(url名称 args[参数]/kwargs{参数})# return HttpResponse(f视图解析路由为{reverse(name_data , args[叶晓春])})return HttpResponse(f视图解析路由为{reverse(app2:name_data , args[data])})