您的位置:首页 > 运维架构 > 反向代理

Django之URL正则及反向代理

2019-02-27 20:33 148 查看

URL正则表达式及分组命名

  1. 使用正则和不使用正则匹配相同

    re_path(r'^index/',views.index)
    
    def index(request):
    return render(request, 'index.html')
  2. 匹配空路径

  3. 分组匹配

    re_path(r'^index2/(\d+)/',views.index2) #url传递参数,路径:http://127.0.0.1:8000/app01/index2/1 ('1'传给了page)
    
    def index2(request, page):
    print(page, type(page)) # 1<class 'str' >传递过来的类型是字符串
    return render(request, 'index.html')
  4. 分组命名匹配
    #url分组命名传递参数,路径http://127.0.0.1:8000/app01/index/1/,只是路由函数的名称必须和组名相同,即page相同

    url(r'^index3/(?P<page>\d+)/$', views.index3)
    
    def index3(request, page):
    return render(request, 'index.html')

同样 page可以给个默认值,即函数中定义page = '1’也是可以的

URL 反向代理

在使用 Django 项目时,一个常见的需求是获得URL的最终形式,以用于嵌入到生成的内容中(视图中和显示给用户的URL等)或者用于处理服务器端的导航(重定向等)。
人们强烈希望不要硬编码这些URL(费力、不可扩展且容易产生错误)
我们可以使用name属性进行反向代理

path('app1/',include('app1.urls'))
#这条是主路由,用来指向子路由

path('index5/' ,views.index5, name = 'xxx')
#这条为子路由,这里的name相当于一个标识 用来识别这条url

#views中
def index5(request):
return render(request, 'index5.html')

#html中
<a href="/app1/index4/">点我到index4</a>
<br>
<a href="{% url 'xxx' %}">点我到index5</a>
#这里URL代表当前的路由即app1,因此点击会直接跳转到主路由app1,然后去众多子路由中寻找name = 'xxx'的子路由,然后执行他的路由/index5/,视图函数,返回html。因此这里如果要改应用app1的名字,只需要修改主路由就可以了!!!

使用反向代理传递参数

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: