2013-02-21 51 views
0

我正在爲Django應用程序的管理網站實施幫助系統。幫助文本在名爲admin-help的單獨應用程序中作爲模型對象實現。管理網站使用GrappelliDjango幫助系統的URL問題

設置如下。

在我的主要urls.py我:

(r'^admin-help/', include('admin-help.urls')), 

此默認admin URL和Grappelli網址前的位置。

urls.pyadmin-help應用程序我有:

urlpatterns = patterns('', 
    ... 
    url(r'^admin-help/list-modelXYZ', 'admin-help.views.list-modelXYZ'), 
    ... 
) 

我的計劃是去拉的幫助頁面中通過AJAX從管理頁面調用。所以,我修改了一個特定的管理模板,包括一個具有onclick句柄調用傳遞一個專題一個JavaScript函數的幫助按鈕:

<li> 
    <a href="#" onclick="showHelp('list_modelXYZ')" class="grp-state-focus">Help</a> 
</li> 

showHelp()函數執行AJAX調用傳遞請求的主題作爲請求的一部分網址:

function showHelp(topic) { 
    grp.jQuery.ajax({ 
    type: 'GET', 
    url: '/admin-help/' + topic, 
    success: function(html) { 
     grp.jQuery('#help-content-area').html(html); 
     grp.jQuery('#help-frame').show(); 
    } 
    }); 
} 

在管理員的幫助應用程序,我有我的views.py

def list_modelXYZ(): 
    return HttpResponse("Hello world!") 

當我點擊幫助按鈕,我得到一個404與以下網址:

http://localhost:8080/admin-help/list_modelXYZ 

爲什麼我會得到一個404呢?我不是一個Django的絕地,希望有人能指出我的錯誤......

回答

1

如果包括在「管理員幫助」前綴的網址,

(r'^admin-help/', include('admin-help.urls')), 

然後在那個前綴下「根」這些URL。 請參閱https://docs.djangoproject.com/en/dev/topics/http/urls/#including-other-urlconfs 這意味着前綴「admin-help」在達到子處理程序時已經「處理完畢」。問題是,你的subhandler被重複前綴:

urlpatterns = patterns('', 
    ... 
    url(r'^admin-help/list-modelXYZ', 'admin-help.views.list-modelXYZ'), 
    ... 
) 

所以你匹配「管理員的幫助/管理員的幫助/列表modelXYZ」。 只需從子網址中刪除前綴,你就會得到你以後有什麼:

管理員的幫助/ urls.py:

urlpatterns = patterns('', 
    ... 
    url(r'^list-modelXYZ', 'admin-help.views.list-modelXYZ'), 
    ... 
) 

如果你有很多的,你可以通過快捷鍵到:

urlpatterns = patterns('admin-help.views', 
    ... 
    url(r'^list-modelXYZ', 'list-modelXYZ'), 
    url(r'^more$', 'something_else'), 
    ... 
) 

PS:「管理幫助」不是一個模塊的好名字,因爲「 - 」是「負」運算符。 「import admin-help」會給你一個SyntaxError。 「幫助」也不好(內置功能),我建議「adminhelp」。 :-)

1

URL配置預計list-modelXYZ

url(r'^admin-help/list-modelXYZ', 'admin-help.views.list-modelXYZ'), 

田地您正在訪問list_modelXYZ(注意下劃線)

http://localhost:8080/admin-help/list_modelXYZ 

錯字?

而且'admin-help.views.list-modelXYZ'內部URL配置看起來應該是'admin_help.views.list_modelXYZ'

此外,也有二兩^admin-help urls.py文件...

+0

是的,謝謝你。愚蠢的錯別字: - 我糾正他們,但仍然得到404 ... – Roger 2013-02-21 13:47:35

+0

@Roger檢查您的主urls.py,它已經包含'^ admin-help'。但在sub urls.py中有另一個'^ admin-help' ... – okm 2013-02-21 16:11:27