1

嗨,大家好。我试图在根目录的子目录中配置我的 django 项目,但没有让事情正常工作。(在本地它工作得很好)。我按照 django 官方 django 文档用 mod_python 部署了一个项目。真正的问题是,每当我尝试转到管理员或我的应用程序的任何视图时,我都会收到“找不到页面”错误。

这是我位于 Fedora 7 中 /etc/httpd/conf.d/ 中的 python.conf 文件

LoadModule python_module 模块/mod_python.so

SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonOption django.root /mysite
PythonDebug On
PythonPath "['/var/www/vhosts/mysite.com/httpdocs','/var/www/vhosts/mysite.com/httpdocs/mysite'] + sys.path"

我知道 /var/www/ 不是放置我的 django 项目的最佳位置,但我只想将我正在进行的工作的演示发送给我的客户,稍后我将更改位置。

例如。如果我去 www.domain.com/mysite/ 我会得到我在 mysite.urls 中配置的索引视图。但我无法访问我的 app.urls (www.domain.com/mysite/app/) 和任何 admin.urls.(www.domain.com/mysite/admin/)

这是 mysite.urls:

urlpatterns = 模式('',

url(r'^admin/password_reset/$', 'django.contrib.auth.views.password_reset', name='password_reset'),
(r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done'),
(r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm'),
(r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete'),
(r'^$', 'app.views.index'),
(r'^admin/', include(admin.site.urls)),
(r'^app/', include('mysite.app.urls')),
(r'^photologue/', include('photologue.urls')),

)

我也尝试用 ''django.contrib.admin.urls' 更改 admin.site.urls ,但没有奏效。我搜索了很多来解决这个问题并阅读了其他开发人员如何配置他们的 django 项目,但没有找到太多信息来在子目录中部署 django。我在 INSTALLED_APPS 中启用了管理员,并且 settings.py 没问题。

如果您有任何指导或告诉我我做错了什么,我们将不胜感激。

谢谢。

4

2 回答 2

0

我正在使用 mod_wsgi,所以我不确定它是否都一样。但在我的 urls.py 中,我有:

(r'^admin/(.*)', admin.site.root),

在我的 Apache 配置中,我有这个:

Alias /admin/media/ /usr/lib/python2.5/site-packages/django/contrib/admin/media

您的路径可能会有所不同。

于 2009-08-26T23:53:27.793 回答
0

如果您的 settings.py 是正确的并且具有正确的 INSTALLED_APPS 并且它可以在开发服务器中运行,那么我会说它是您的 Apache 配置文件。

尝试运行我的 python 应用程序为 mod_python + Django 创建 Apache 配置文件。来源github.com。一旦你有一个工作配置文件,你可以修改它。

像这样运行:

C:\Users\hughdbrown\Documents\django\Apache-conf>python http_conf_gen.py --flavor=mod_python --source_dir=. --server_name=foo.com --project_name=foo
Writing 'foo.vhost.python.conf'

结果如下所示:

# apache_template.txt
NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@foo.com
    ServerName foo.com

    DocumentRoot "./foo/"

    <Location "/">
        # without this, you'll get 403 permission errors
        # Apache - "Client denied by server configuration" 
        allow from all

        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        PythonOption django.root /foo

        PythonDebug On
        PythonPath "[os.path.normpath(s) for s in (r'.', r'C:\Python26\lib\site-packages\django') ] + sys.path"
        SetEnv DJANGO_SETTINGS_MODULE foo.settings
        PythonAutoReload Off
    </Location>

    <Location "/media" >
        SetHandler None
        allow from all
    </Location>

    <Location "/site-media" >
        SetHandler None
        allow from all
    </Location>

    <LocationMatch "\.(jpg|gif|png)$">
        SetHandler None
        allow from all
    </LocationMatch>
</VirtualHost>
于 2009-08-26T23:54:53.873 回答