最近在處理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
所以,大家在使用的時候還是要根據自己的版本來進行選擇。