Django 如何處理多變的URL

最近在處理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

所以,大家在使用的時候還是要根據自己的版本來進行選擇。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章