2015-06-26 55 views
0

我有一個小的簡歷站點,它不會在點擊反向URL時呈現不同的模板。Django反向查找呈現相同(錯誤)的模板

網站/腳本/模板/腳本/ index.html的:

<p>were at main</p> 

<a href="{% url 'scripts:python' %}">python</a> 
<br/> 
<a href="{% url 'scripts:bash' %}">bash</a> 

這些鏈接「蟒蛇」,並在地址欄「慶典」的工作,他們帶我們到本地主機:腳本/慶典/和本地主機:腳本/ Python的/,但會顯示完全相同的網頁(index.html的,或本地主機:腳本/)

網站/腳本/ urls.py:

from django.conf.urls import patterns, include, url 
from scripts import views 


urlpatterns = patterns('', 
    url(r'$',   views.index,   name='index'), 
    url(r'python/$',  views.access_python, name='python'), 
    url(r'bash/$',  views.access_bash,  name='bash'), 
) 

網站/腳本/ views.py :

from django.shortcuts import render 

def index(request): 
    return render(request, 'scripts/index.html') 

def access_python(request): 
    return render(request, 'scripts/python.html') 

def access_bash(request): 
    return render(request, 'scripts/bash.html') 

網站/ urls.py(主文件夾W/settings.py):

from django.conf.urls import patterns, include, url 

urlpatterns = patterns('', 
    url(r'scripts/', include('scripts.urls', namespace='scripts')), 
) 

點擊 '慶典' 應該檢索:

網站/腳本/模板/腳本/ bash.html :

<p>we're at bash</p> 

爲什麼反向查找到達正確的URL,但沒有調用該URL模式想要的關聯視圖?謝謝

回答

2

索引正則表達式捕獲任何可能的模式,因爲它匹配字符串的任何末尾。我發現通過移動其他2之後的索引模式應該是:

urlpatterns = patterns('', 

    url(r'^$',   views.index,   name='index'), 
    url(r'^python/$',  views.access_python, name='python'), 
    url(r'^bash/$',  views.access_bash,  name='bash'), 
) 

任何空白索引中的網址(R「^ $」)既需要開始和字符串的結束,到之後的空字符串匹配該模式的第一部分(在這種情況下,'腳本/')