url命名:
为什么需要url命名?
因为url是经常变化的。如果在代码中写死可能会经常改代码。给url取个名字,以后使用url的时候就使用他的名字进行反转就可以了,就不需要写死url了。
导入相关的库
from django.shortcuts import redirect,reverse
redirect 跳转函数
reverse 反转函数
如何给一个url指定名称?
在path
函数中,传递一个name
参数就可以指定。示例代码如下:
在urls.py文件中
urlpatterns = [
path('',views.index,name='index'),
path('signin/',views.login,name='login')
]
在views.py中
def index(request):
# ?username=xxx
username = request.GET.get('username')
if username:
return HttpResponse('前台首页')
else:
return redirect(reverse('login'))
应用命名空间
在多个app之间,有可能产生同名的url。这时候为了避免反转url的时候产生混淆,可以使用应用命名空间,来做区分。定义应用命名空间非常简单,只要在app
的urls.py
中定义一个叫做app_name
的变量,来指定这个应用的命名空间即可。示例代码如下:
# 应用命名空间
app_name = 'front'
urlpatterns = [
path('',views.index,name='index'),
path('login/',views.login,name='login')
]
以后在做反转的时候就可以使用应用命名空间:url名称
的方式进行反转。示例代码如下:
return redirect(reverse(''front:login'))