2017-02-04 86 views
0

我遇到了我的網址問題。我有一個名爲用戶的應用程序,有兩個模型,沙龍和造型師。網址/造型師和/沙龍呈現相同的視圖(stylist_results),但/沙龍應呈現salon_results,我不明白爲什麼。我認爲我使用命名空間的方式可能有問題。命名空間問題。兩個不同的網址呈現相同的視圖

用戶/ urls.py

from django.conf.urls import url 

#import views from the current directory 
from . import views 

urlpatterns=[ 
    url(r'^$', views.stylist_results, name='stylist_results'), 
    url(r'^(?P<pk>\d+)$', views.stylist_detail, name='stylist_detail'), 
    url(r'^$', views.salon_results, name='salon_results'), 
    url(r'^(?P<pk>\d+)$', views.salon_detail, name='salon_detail'), 
] 

用戶/ views.py

from django.shortcuts import get_object_or_404, render 

from .models import Salon, Stylist 
# Create your views here. 

def salon_results(request): 
    salons = Salon.objects.all() 
    return render(request, 'salons/salon_results.html', {'salons': salons}) 


def salon_detail(request, pk): 
    salon = get_object_or_404(Salon, pk=pk) 
    return render(request, 'salons/salon_detail.html', {'salon': salon}) 


def stylist_results(request): 
    stylists = Stylist.objects.all() 
    return render(request, 'stylists/stylist_results.html', {'stylists': stylists}) 

def stylist_detail(request, pk): 
    stylist = get_object_or_404(Stylist, pk=pk) 
    return render(request, 'stylists/stylist_detail.html', {'stylist': stylist}) 

urls.py

from django.conf.urls import url 
from django.contrib import admin 
from django.conf.urls import include 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 

from . import views 

urlpatterns = [ 
    url(r'^salons/', include('users.urls', namespace='salons')), 
    url(r'^stylists/', include('users.urls', namespace='stylists')), 
    url(r'^admin/', admin.site.urls), 
    url(r'^$', views.home, name='home'), 
] 


urlpatterns += staticfiles_urlpatterns() 

views.py

from django.shortcuts import render 


def home(request): 
    return render(request, 'home.html') 
+1

它總是執行第一個匹配的URL - 'r'^ $',views.stylist_results,'。創建兩個分離的文件。 – furas

回答

1

分割你的髮型師和沙龍的觀點分成兩個獨立的模塊。你可能會考慮創建兩個不同的應用程序,但你不需要。

用戶/ stylist_urls.py

urlpatterns = [ 
    url(r'^$', views.stylist_results, name='stylist_results'), 
    url(r'^(?P<pk>\d+)$', views.stylist_detail, name='stylist_detail'), 
] 

用戶/ salon_urls.py

urlpatterns = [ 
    url(r'^$', views.salon_results, name='salon_results'), 
    url(r'^(?P<pk>\d+)$', views.salon_detail, name='salon_detail'), 
] 

然後更新項目的urls.py新模塊:

urlpatterns = [ 
    url(r'^salons/', include('users.salon_urls', namespace='salons')), 
    url(r'^stylists/', include('users.stylist_urls', namespace='stylists')), 
    ... 
] 

在此刻,你的沙龍URL的正則表達式與造型師的URL完全一​​樣,所以沙龍的URL無所不在我總是首先匹配。

+0

謝謝,這工作完美。 –

0

你是怎麼想到要發生

要包括相同的用戶/ urls.py在urls.py

它下面:

找到我/設計師/ =>進入包括網址 找到第一URL(R '^ $',views.stylist_results,名稱= 'stylist_results')的次數,

呈現這一觀點

同樣的事情發生與/美髮/

URL Dispatcher documentation

1

您指定同一組的URL(users.urls)爲這裏的沙龍和造型師:

url(r'^salons/', include('users.urls', namespace='salons')), 
    url(r'^stylists/', include('users.urls', namespace='stylists')), 
相關問題