URL路由

URL配置

URL配置就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。
基本格式

from django.conf.urls import url
from django.contrib import admin
from app1 import views //视图
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),
]

r’^index/’ : 访问路径
views.index : 视图中的函数

别名和反向解析

别名

给url匹配规则起别名,通过别名就可以调用当前的url,避免url路径改变后,前端访问这个路径的标签也需要修改

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index2/', views.index,name="index"), # 起别名
    url(r'^login2/', views.login,name="login"), 
]

反向解析

模板渲染的时候,被django解析成了这个名字对应的那个url,这个过程叫做反向解析

<!--前端-->
{% url '别名' "参数1" "参数2" %}

在视图函数中

# 后端
from django.urls import reverse # 导入模块
def index(request):
    print(reverse("index")) 
    return render(request,"index.html")
# 带参
def login(request):
    print(reverse("login",args=("参数1","参数2")))
    print(reverse("login",kwargs={"参数1":"值","参数2":"值"}))
    return render(request,"login.html")

分组

可以使用分组命名匹配的正则表达式组来捕获URL中的值并以关键字参数形式传递给视图。

无名分组

# urls.py
url(r'^index/(\d+)/(\d+)/', views.index,name='index')
# views.py
def index(request,m,n)  # 位置传参,位置不可变

有名分组

# urls.py
url(r'^index/(?P<name>\d+)/(?P<age>\d+)/', views.index,name='index')
# views.py
def index(request,name,age) # 关键字传参,位置可以不固定

命名空间

多个应用下,别名冲突时,可能会导致无法url无法正常使用,命名空间可以保证别名对应url的唯一性。

创建多个app,然后配置app,并在每个app应用文件夹下面创建urls.py文件

# 项目的urls.py文件
from django.conf.urls import include
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^app01/', include('app01.urls',namespace='app01')),
url(r'^app02/', include('app02.urls',namespace='app02')),
]
# app应用下的urls.py文件
from django.conf.urls import url
from app01 import views
urlpatterns = [
url(r'^index/', views.index,name='index'),
]

反向解析

# 反向解析:
reverse('命名空间名称:别名') 
# 例
reverse('app01:index')
# 页面
{% url 'app01:index' %}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值