【问题标题】:Django with mod_wsgi & apache incorrect redirect (no errors)带有 mod_wsgi 和 apache 的 Django 重定向不正确(没有错误)
【发布时间】:2014-11-26 00:55:02
【问题描述】:

我的 django 项目遇到了这个奇怪的问题。我现在将 Django 与 apache 和 mod_wsgi 一起使用,试图使其在生产模式下工作,但是 url 重定向似乎不起作用。我只能访问站点索引页面,但不能访问任何子 URL。即如果我去 site-url.com/quzapp/ 它会显示索引页面,这与我去 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(正常)。有人知道这个问题吗?

非常感谢您的帮助!

【问题讨论】:

  • 设置索引 url 以 "$" 结尾:url(r'^$', views.index, name='index')
  • 谢谢!你说的对。这解决了我的问题:)

标签: django apache url


【解决方案1】:

问题出在您的主要 urls.py 中:您没有终止空的正则表达式,因此它匹配所有内容。确保使用最后的 $:

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

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

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

【讨论】:

  • 嗨丹尼尔,非常感谢您的帮助!这真的解决了我的问题!另外,非常感谢您的建议。我将删除多余的管理员网址:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-05
  • 2014-05-16
  • 1970-01-01
  • 2023-03-26
  • 2021-07-28
  • 2021-04-16
  • 1970-01-01
相关资源
最近更新 更多