2013-02-21 67 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