1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| '''当多个应用在反向解析的时候如果出现别名冲突的情况时,那么无法识别'''
from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^index/', views.index, name='index_name'), url(r'^login/', views.login) ]
from django.conf.urls import url from app02 import views urlpatterns = [ url(r'^index/', views.index, name='index_name'), url(r'^login/', views.login) ]
from django.shortcuts import render, HttpResponse, redirect, reverse def index(request): return HttpResponse('from app01 index') def login(request): print(reverse('index_name')) return HttpResponse('from app01 login')
from django.shortcuts import render, HttpResponse, redirect, reverse def index(request): return HttpResponse('from app02 index') def login(request): print(reverse('index_name')) return HttpResponse('from app02 login')
'''针对上述问题有以下解决办法''' 方式1:名称空间(namespace) 总路由: url(r'app01/', include('app01.urls', namespace='app01')), url(r'app02/', include('app02.urls', namespace='app02')), 后端: reverse('app01:index_name') reverse('app02:index_name') 前端: <a href="{% url 'app01:index_name' %}">app01</a> <a href="{% url 'app02:index_name' %}">app02</a> 方式2:起别名不要冲突即可(前缀加上应用名) url(r'^index/', views.index, name='app01_index_name') url(r'^index/', views.index, name='app02_index_name') <a href="{% url 'app01_index_name' %}">app01</a> <a href="{% url 'app02_index_name' %}">app01</a>
|