- views中的链接跳转:主要用到reverse和redirect
reverse(‘app名:URL模式名称’,kwargs={‘传参1’:值’,‘传参2’:值2})
1.1 如果要使用app名:URL模式名称这种样式,需要在urls.py文件中增加一行app_name=app名,否则会提示URL模式名称没有注册,建议使用此种格式,可以避免app过多存在URL模式名相同从而导致错误。
1.2 kwargs对应的是传参功能,如果在path路径中未设置传参内容则此时不需要
urls.py
from django.urls import path
from myapp import views
app_name='myapp'
urlpatterns=[
path('index/',views.index,name='index'),
path('login/',views.login,name='login'),
path('detail///',views.detail,name='detail'),
path('try/',views.reurl,name='reurl'),
]
view.py文件
def reurl(request,id=1):
new_url=reverse('myapp:detail',kwargs={'artical_id':5,'eid':2})
return redirect(new_url)
- Template中的链接跳转:主要用到a标签和{% url %}
这里我们只介绍a标签的相对链接跳转,绝对跳转比较简单例如:跳转相对路径链接跳转分为两种:
1.1 使用{% url ‘app名:URL模式名称’ 传参1=值1,传参2=值2 %},app名与上面提到的一样,当然也可以把app名:去掉不用,包括后面的传参
template中
跳转到登录页面 跳转到详情页面
1.2使用相对路径直接跳转格式跳转,此处路径名前面加了斜线,那么这样跳转路径会直接变为域名/路径名,例如我的代码例子,由于我解耦了url,利用app中的url分发,故我在路径名前面又增加了总路径名,否则会报错



