最近在处理Django的问题中遇到的一个比较棘手的问题就是,产品经理有时候会觉得我们网站之前的UrL太土了,比如说登陆,之前用www.xxxx.com/denglu,产品经理说这个要改成login,但是在整个产品体系中,涉及到跳转登陆的不止一个地方啊,一个个地方去查找的话太麻烦了,所以这个时候突然想到了之前学过的一个知识点,利用reverse 来给Django重命名。
具体还是看代码吧:
先看url.py里面的代码:
from django.conf.urls import url
from django.contrib import admin
from app01 import views as app01_views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url('denglu',app01_views.login),
url('tv/',app01_views.tv),
url('movie/',app01_views.movie),
url('zy/',app01_views.zy),
url('',app01_views.index)
]
在这个地方,我们把代码修改一下:
from django.conf.urls import url
from django.contrib import admin
from app01 import views as app01_views
url_patterns = [
url(^'admin/',admin.site.urls),
url('signin',app01_views.login,name='login'),
url('tv/',app01_views.tv),
url('movie/',app01_views.movie),
url('zy/',app01_views.zy),
url('',app01_views.index)
]
然后在views.py里面进行修改(具体代码如下):
#encoding=utf-8
from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import redirect
from django.core.urlresolvers import reverse
def index(request):
username = request.GET.get('username')
if username:
return render(request,'index.html')
else:
return redirect(reverse('login'))
def movie(request):
username = request.GET.get('username')
if username:
return render(request,'movie.html')
else:
return redirect(reverse('login'))
def tv(request):
username = request.GET.get('username')
if username:
return render(request,'tv.html')
else:
return redirect(reverse('login'))
在处理的时候使用redirect 结合reverse来使用即可。
另外:我使用的Django是1.9.13版本,所以引入reverse的语法是:
from django.core.urlresolvers import reverse
后面的版本普遍使用的是:
from django.shortcuts import reverse
所以,大家在使用的时候还是要根据自己的版本来进行选择。