Django与mod_wsgi& apache错误的重定向(没有错误)

时间:2014-10-01 08:19:12

标签: django apache url

我的django项目遇到了这个奇怪的问题。我现在正在使用Django和apache& mod_wsgi,试图让它在生产模式下工作,但url重定向似乎不起作用。我只能访问网站索引页面,但不能访问任何子网址。即如果我去site-url.com/quapp/它显示索引页面,这与我去site-url.com/完全相同

当我在开发服务器上运行它时,一切正常。我总是被引导到所需的页面。有线的事情是,即使我已经在apache配置中将日志设置为调试级别,也没有记录错误。

当我检查access_log时,它显示如下:

 "GET /quzapp/ HTTP/1.1" 200 1935    (the quzapp page)

"GET / HTTP/1.1" 200 1935     (the site index)

日志似乎没问题但我看不到除site_index.html之外的任何页面......可能出现什么问题?

以下是该网站的简要结构: 该项目名为mysite,主要设置文件位于子目录中,也调用mysite。 quzapp是一个django应用程序。

mysite/
    db.sqlite3
    manage.py
    mysite/ 
        settings.py
        urls.py
        views.py
        wsgi.py
    quzapp/
        __init__.py
        urls.py
        views.py
        admin.py
        forms.py
        models.py
        templates/
             quzapp/
                  base.html
                  …...
    template/
        siteindex.html
        …..
    static/…
    media/….

mysite / mysite / urls.py的主要部分:

urlpatterns = patterns('',
    url(r'^', views.index, name='index'),
    url(r'^quzapp/',include('quzapp.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

mysite / quzapp / urls.py的主要部分:

urlpatterns = patterns('',
    url(r'^$', views.initial_form, name='index'),
    url(r'^allimage/$', views.allimage, name='allimage'),
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    url(r'^admin/', include(admin.site.urls)),

    url(r'^readytostart/$','questionnaires.views.register_success'),
    url(r'^audio/$', views.audio, name='audio'),
    url(r'^text/$', views.text, name='text'),
    url(r'^end/$', views.endpage, name='endpage'),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += staticfiles_urlpatterns()

我打印了一些文本以查看是否访问了所有urls.py文件,答案是肯定的。 print命令在error_log中留下文本消息,首先访问mysite / mysite / urls.py,然后访问mysite / quzapp / urls.py。

在mysite / mysite / views.py中,它返回render_to_response('siteindex.html')。我想这就是我访问siteindex页面的方式。其他页面以mysite / quzapp / views.py呈现。我再次打印出一些文本消息,并在错误日志中显示访问mysite / mysite / views.py后访问的mysite / quzapp / views.py文件。

我无法想到出了什么问题并且没有记录错误,在访问日志中状态代码始终为200(ok)。有没有人对这个问题有所了解?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:2)

问题在于你的主urls.py:你没有终止空的正则表达式,所以它匹配所有内容。确保使用最终的$:

url(r'^$', views.index, name='index'),

请注意,您的print语句不太可能有用,因为url和views文件都是在启动时加载的。您需要将print语句放在view函数中,但您已经知道正在调用哪个视图。

另请注意,您不应该在主urls.py和quzapp中包含管理网址。