2

我在带有 mod_wsgi 1.3.1 + Python 2.5.2 的 Ubuntu 上使用 Django 1.1 rc1 和 Apache 2.2.8。

在 Django 的内部测试网络服务器上一切正常,但是在迁移到 Apache mod_wsgi 之后,所有的 url 都/admin/appname/modelname/开始不起作用。他们使用以下日志显示 404 not found 错误:

...
^admin/ ^$
^admin/ ^logout/$
^admin/ ^password_change/$
^admin/ ^password_change/done/$
^admin/ ^jsi18n/$
^admin/ ^r/(?P<content_type_id>\d+)/(?P<object_id>.+)/$
^admin/ ^(?P<app_label>\w+)/$
The current URL, admin/account/userprofile/, didn't match any of these.

奇怪的是,/admin/appname/包括我的自定义网址在内的所有其他部分都可以正常工作。

是 Django 的错误还是配置问题?以及如何解决?

4

1 回答 1

1

我知道 1.1RC1 对管理 URL 解析器进行了一些更改以使用命名空间:这可能是您的问题。

见这里:http ://docs.djangoproject.com/en/dev/releases/1.1-rc-1/

除此之外,看起来 URL 不正确,因为调试跟踪中的最后一行 url 只会匹配 /admin/app/ 而不是 /admin/app/xxxx。这里的信息可能会有所帮助。

由于某种原因,这 ^admin/ ^r/(?P\d+)/(?P.+)/$ 看起来不正确,这不是给 /admin//xxx/yyy/ 吗?

编辑:不,它给 /admin/r/xxx/yyy/

我现在无法对此进行测试,因为这台计算机上只有 1.0.2 可用(并且没有 mod_wsgi) - 我今晚回家时将在 1.1 上进行测试。

编辑:看起来像这样

for model, model_admin in self._registry.iteritems():
    urlpatterns += patterns('',
       url(r'^%s/%s/' % (model._meta.app_label, model._meta.module_name),
            include(model_admin.urls))
    )
return urlpatterns

由于某些原因无法正常工作,因为 URL 未包含在调试跟踪的搜索路径中。admin.py 文件是否正确?

于 2009-07-27T12:40:46.487 回答