【问题标题】:Django: TypeError: 'str' object is not callable, referer: http://xxxDjango: TypeError: 'str' object is not callable, referer: http://xxx
【发布时间】:2012-04-10 15:57:38
【问题描述】:

我一直想知道为什么当我设置我的 django 项目 'arvindemo' debug = False 的 settings.py 并使用 mod_wsgi 在 Apache 上部署它时,我得到了 500 Internal Server Error。

环境: Django 1.4.0 Python 2.7.2 mod_wsgi 2.8 操作系统 centOS

这里是回顾: 访问主页,进入子页面A/B/C/D,填写一些表格,然后提交给Apache服务器。一旦点击“提交”按钮,我将得到“500 Internal Server Error”,以及下面列出的error_log(Traceback):

“对不起,我放错了Trackback,这里应该列出真正的Traceback”: PS: "STACKOVERFLOW 不要让我放置超过 2 个超链接" = "http://58.215.177.34/Presentation"

[Tue Apr 10 11:03:15 2012] [error] [client 122.198.133.250] mod_wsgi (pid=2973): Exception occurred processing WSGI script '/opt/web/django/wsgi/django.wsgi'., referer: STACKOVERFLOW DON'T LET ME PUT MORE THAN 2 hyperlinks
[Tue Apr 10 11:03:15 2012] [error] [client 122.198.133.250] Traceback (most recent call last):, referer: STACKOVERFLOW DON'T LET ME PUT MORE THAN 2 hyperlinks
[Tue Apr 10 11:03:15 2012] [error] [client 122.198.133.250]   File "/opt/python2.7/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 241, in __call__, referer: STACKOVERFLOW DON'T LET ME PUT MORE THAN 2 hyperlinks
[Tue Apr 10 11:03:15 2012] [error] [client 122.198.133.250]     response = self.get_response(request), referer: STACKOVERFLOW DON'T LET ME PUT MORE THAN 2 URLs
[Tue Apr 10 11:03:15 2012] [error] [client 122.198.133.250]   File "/opt/python2.7/lib/python2.7/site-packages/django/core/handlers/base.py", line 179, in get_response, referer: STACKOVERFLOW DON'T LET ME PUT MORE THAN 2 hyperlinks
[Tue Apr 10 11:03:15 2012] [error] [client 122.198.133.250]     response = self.handle_uncaught_exception(request, resolver, sys.exc_info()), referer: STACKOVERFLOW DON'T LET ME PUT MORE THAN 2 hyperlinks
[Tue Apr 10 11:03:15 2012] [error] [client 122.198.133.250]   File "/opt/python2.7/lib/python2.7/site-packages/django/core/handlers/base.py", line 228, in handle_uncaught_exception, referer: STACKOVERFLOW DON'T LET ME PUT MORE THAN 2 hyperlinks
[Tue Apr 10 11:03:15 2012] [error] [client 122.198.133.250]     return callback(request, **param_dict), referer: STACKOVERFLOW DON'T LET ME PUT MORE THAN 2 URLs
[Tue Apr 10 11:03:15 2012] [error] [client 122.198.133.250] TypeError: 'str' object is not callable, referer: STACKOVERFLOW DON'T LET ME PUT MORE THAN 2 hyperlinks

[请将 'STACKOVERFLOW DON'T LET ME PUT MORE THAN 2 hyperlinks' 替换为 'http://58.215.177.34/Presentation'] :)

在使用 django runserver 时,我设置了 arvindemo.settings debug = True,一切正常。但是一旦我设置 debug = False,情况就发生了变化。

这是我的意见.py

from django.http import HttpResponseRedirect
from django.http import HttpResponse, HttpResponseServerError
from django.shortcuts import render_to_response
import datetime, string
from user_info.models import *
from django.template import Context, loader, RequestContext
import settings
def hello(request):
    return HttpResponse("hello girl")

def helpPage(request):
    return render_to_response('kktHelp.html')

def server_error(request, template_name='500.html'):
    return render_to_response(template_name,
            context_instance = RequestContext(request)
    )

def page404(request):
    return render_to_response('404.html')

def submitPage(request):
    post = request.POST
    Mall = 'goodsName'
    Contest = 'ojs'
    Presentation = 'addr'
    WeatherReport = 'city'
    Habit = 'task'
    if Mall in post:
            return submitMall(request)
    elif Contest in post:
            return submitContest(request)
    elif Presentation in post:
            return submitPresentation(request)
    elif Habit in post:
            return submitHabit(request)
    elif WeatherReport in post:
            return submitWeather(request)
    else:
            return HttpResponse(request.POST)
            return HttpResponseRedirect('404')
def submitXXX():
  .....
def xxxx():
....

urls.py 来了

from django.conf.urls import patterns, include, url
from views import *
from django.conf import settings

handler500 = 'server_error'
urlpatterns = patterns('',
    url(r'^hello/$', hello),  # hello world
    url(r'^$', homePage),
    url(r'^time/$', getTime),
    url(r'^time/plus/(\d{1,2})/$', hoursAhead),
    url(r'^Ttime/$', templateGetTime),
    url(r'^Mall$', templateMall),
    url(r'^Contest$', templateContest),
    url(r'^Presentation$', templatePresentation),
url(r'^Habit$', templateHabit),
url(r'^Weather$', templateWeather),
url(r'^Help$', helpPage),
url(r'^404$', page404),
url(r'^500$', server_error),
url(r'^submitPage$', submitPage),
url(r'^submitMall$', submitMall),
url(r'^submitContest$', submitContest),
url(r'^submitPresentation$', submitPresentation),
url(r'^submitHabit$', submitHabit),
url(r'^submitWeather$', submitWeather),
url(r'^terms$', terms),
url(r'^privacy$', privacy),
url(r'^thanks$', thanks),
url(r'^about$', about),
url(r'^static/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.STATICFILES_DIRS}),
)

我确定我的django项目没有语法错误,因为当我使用django runserver时,一切都很好。

有人可以帮忙吗?

最好的问候

【问题讨论】:

  • 所有这些文字都需要缩短为相关信息。我想看到你的 settings.py 的 sn-p,就像崩溃发生时一样。此外,由于您知道导致崩溃的确切 URL,因此相关的 url 信息应该是“Presentation”以及“templatePresentation”视图。需要查看该视图(而不是其他内容)。
  • 其实问题不仅仅出现在“Presentation”,当我访问其他站点时,问题仍然存在(这里是recap:访问主页,转到子页面A/B/C/ D、填写一些表单,然后提交到Apache服务器。点击“提交”按钮,我会得到“500 Internal Server Error”),提交表单时出现“500页面”,相关视图是“submitPage”,我认为导致崩溃的确切 URL 是“58.215.177.34/submitPage”。现在这是我设置的 sn-p:
  • 如果没有看到正确的完整的崩溃回溯,也不知道代码的哪一部分崩溃了,我们真的无能为力。如果您确信在您的submitPage 视图中发生了崩溃,那么我建议您在其上放置打印语句以调查值,并检查您的开发服务器输出中的输出。

标签: django apache mod-wsgi internal-server-error


【解决方案1】:

在您的帖子中,您一直将 False 拼错为 Flase。你在设置文件中拼写正确吗?

【讨论】:

  • 对不起,设置文件中的'False'是正确的:),我认为是其他原因导致错误
猜你喜欢
  • 2011-04-26
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 2022-01-16
  • 2014-10-19
相关资源
最近更新 更多