我的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)。有没有人对这个问题有所了解?
非常感谢你的帮助!
答案 0 :(得分:2)
问题在于你的主urls.py:你没有终止空的正则表达式,所以它匹配所有内容。确保使用最终的$:
url(r'^$', views.index, name='index'),
请注意,您的print语句不太可能有用,因为url和views文件都是在启动时加载的。您需要将print语句放在view函数中,但您已经知道正在调用哪个视图。
另请注意,您不应该在主urls.py和quzapp中包含管理网址。