响应式科技公司网站模板,网页模板源代码之家,雅虎搜索,域名查询注册信息一、url路由
自上而下的#xff0c;如果匹配的路由中是包含int转换器#xff0c;则不能匹配其他的不是int的相关字符#xff0c;譬如文字等#xff1b; 自定义路由转换器#xff1a; 1、创建一个converter.py的文件#xff1b; 2、再写一个类#xff1a; class FourDig…一、url路由
自上而下的如果匹配的路由中是包含int转换器则不能匹配其他的不是int的相关字符譬如文字等 自定义路由转换器 1、创建一个converter.py的文件 2、再写一个类 class FourDigitYearConverter: regex ‘[0-9]{4}’ # 类属性一个字符串形式的正则表达式属性 def to_python(self, value): # 一个用来将字符串转换成你想要的那个数据类型并传给视图如果转换失败它必须弹出ValueError异常。 return int(value) def to_url(self, value): # 将Python数据类型转换成一段url的方法与上面方法相反如果转换失败它也必须弹出ValueError异常。 return ‘%04d’ % value 3、在该APP的url中注册它 register_converter(converters.FourDigitYearConverter, ‘yyyy’) 使用样式path(‘articles/yyyy:year/’, views.year_archive)
在路由中使用正则表达式语法是 (?Ppattern) 其中 name 是组名pattern 是要匹配的模式。 例如re_path(r’^articles/(?P[0-9]{4})/(?P[0-9]{2})/(?P[\w-])/$, views.article_detail)
二、路由转发
路由中的命名最好不要和路径的url一样不然有可能导致错误。 可以在include后面加上一个字典参数但是该参数必须是各个子路由都会使用的不然可能会出错。
三、反向解析和命名空间
1、反向解析url def redirect_to_year(request): # … year 2020 # … return HttpResponseRedirect(reverse(‘news-year-archive’, args(year,))) 2、命名空间app_name和namespace 在模板中使用的时候用冒号隔开 namespace定义在include中整个项目的所有app中的所有namespace不能重名也就是全局唯一使用namespace功能的前提是设置app_name,如果不设置会弹出异常要在视图中获取namespace属性值通过request.resolver_match.namespace。
四、函数视图及快捷方式
1、返回错误HttpResponseNotFound( ) Http404异常返回Http404异常的时候需要用raise不能用return 自定义各种错误页面 #在子路由增加的条目 handler400 views.bad_request handler403 views.permission_denied handler404 views.page_not_found handler500 views.error 然后在views中增加 requires_csrf_token def bad_request(request, exception): return render(request, ‘400.html’) 2、内置的快捷方法 render(requesttemplate_name, contextNone, content_typeNone, statusNone, usingNone) 必需参数 ● request视图函数处理的当前请求封装了请求头的所有数据其实就是视图参数request。 ● template_name要使用的模板的完整名称或者模板名称的列表。如果是一个列表将使用其中能够查找到的第一个模板。 可选参数 ● context添加到模板上下文的一个数据字典。默认是一个空字典。可以将认可需要提供给模板的数据以字典的格式添加进去。这里有个小技巧使用Python内置的locals()方法可以方便地将函数作用域内的所有变量一次性添加进去。 ● content_type用于生成的文档的MIME类型。 默认为DEFAULT_CONTENT_TYPE设置的值也就是’text/html’。 ● status响应的状态代码。 默认为200。 ● using用于加载模板使用的模板引擎的NAME。 def my_view(request): # View code here… return render(request, ‘myapp/index.html’, { ‘foo’: ‘bar’, }, content_type‘application/xhtmlxml’) 等同于 def my_view(request): # View code here… t loader.get_template(‘myapp/index.html’) c {‘foo’: ‘bar’} return HttpResponse(t.render(c, request), content_type‘application/xhtmlxml’) 重定向——redirect() redirect(to, args, permanentFalse, *kwargs) 根据传递进来的url参数返回HttpResponseRedirect。 参数to可以是 ● 一个模型实例将调用模型的get_absolute_url()函数反向解析出目的url ● URL的name名称可能带有参数reverse()将用于反向解析url ● 一个绝对的或相对的URL将原封不动的作为重定向的目标位置。 默认情况下是临时重定向如果设置permanentTrue将永久重定向。