2011-06-21 78 views
-2

我想給databrowse.admin小窗口鏈接的django擱置在這裏:沒有反向匹配錯誤。如何調試?

http://127.0.0.1:8000/admin/openmaps/open_layers/ 

我試圖把這個模板,它返回一個反向匹配錯誤。如何調試?

<a href="{% url /admin/openmaps/open_layers/ %}">A</a> 
+0

從仔細閱讀有關['url'-tag](https://docs.djangoproject.com/en/1.3/ref/templates/builtins/#url)的文檔以及如何使用URLConf進行反向匹配作品。你的語法錯了。 – vikingosegundo

回答

5

您正在嘗試使用的URL標籤在Django文檔指定位置(1.4版本):

https://docs.djangoproject.com/en/1.3/ref/templates/builtins/#url

它的目的是保持中的網址鏈接DRY(唐不要重複自己),這樣就不必在您的開發,登臺,製作或任何其他服務器環境之間更改鏈接URL。

url標記將通過url名稱作爲其主參數的視圖或對視圖的引用,以及該視圖作爲第二個參數使用的任何參數。從文檔:

{% url path.to.some_view v1 v2 %} 

path是包名,to是一個模塊名稱和some_view是視圖功能。 v1v2是視圖需要的參數。它看起來像這樣的路徑/ to.py:

from django.http import HttpResponse 

def some_view(request, v1, v2): 
    return HttpResponse("A response") 

此外,管理員打交道時,你需要使用的URL命名空間的策略使用的名稱空間admin,就像這樣:

{% url admin:view_name %} 

你需要做的是找到你正在尋找的視圖的路徑,並使用該路徑創建URL。讓你開始,你可以創建一個鏈接到您在管理網站的索引,像這樣:

<a href="{% url admin:index %}">My Admin Site</a> 

這將爲管理員註銷,密碼更改表單,和應用程序列表,分別鏈接:

<a href="{% url admin:logout %}">Admin Logout</a> 
<a href="{% url admin:password_change %}">Change Password</a> 
<a href="{% url admin:app_list %}">The Application List</a> 

有關管理員中特定模型的觀點,django使用模型上的元數據來構建它們的url名稱。您可以對模型進行相同的操作以鏈接到其管理頁面,但是,您需要以編程方式構建其名稱(除非您知道它們)。所以,如果你有一個型號命名Foo,你可以鏈接到它的改變列表視圖中添加視圖和刪除視圖的管理分別由建設自己的視圖名稱,並使用他們的reverse方法:

在你看來:

from django.core.urlresolvers import reverse 

#...some view code... 
#Get an instance of the model 
bar = Foo.objects.all()[0] 
prefix = "%s_%s_" % (Foo._meta.app_label, Foo._meta.module_name) 
changelist_name = "%schangelist" % prefix 
add_name = "%sadd" % prefix 
delete_name = "%sdelete" % prefix 

changelist_url = reverse(changelist_name) 
add_url = reverse(add_name) 
delete_url = reverse(delete_name, args=(bar.pk,)) #You need the id of the model you want to delete as an argument. 

#...some more view code... 

在模板

<a href="{{ changelist_url }}">The Foo ChangeList</a> 
<a href="{{ add_url }}">Add a Foo</a> 
<a href="{{ delete_url }}">Delete {{ bar.name }}</a> 

你可能必須做一些挖掘到Django的或者您使用的是得到你想要的確切網址名稱的任何特定擴展名的膽量。如果您可以提供有關您想要在管理員中訪問的模型的更多詳細信息,則可以提供更具體的答案。