【问题标题】:Django migrating from 1.3.1 to 1.7.4 and keep getting Server Error 500Django 从 1.3.1 迁移到 1.7.4 并不断收到服务器错误 500
【发布时间】:2015-01-30 04:42:30
【问题描述】:

这可能是一个愚蠢的问题,但我只是 python/django 的初学者。
我不断收到服务器错误 (500) 和未找到页面(在此服务器上找不到请求的 URL /。

在我的views.py中,如果我只是测试一串“Hello, World”,那么就OK了。
如果我使用 index.html(位于 Templates 文件夹中)或注册、登录等链接,则会出现上述错误。
我可以看到没有静态 css 文件的管理员登录窗口。当我登录时,我也会遇到服务器错误 500。

我猜是 Django 的 URL 系统不能正常工作?

我得到的现有项目是基于 Django 1.3.1 构建的,我刚刚将其升级到 1.7.4。 从下图可以看出,django 1.3.1中项目的旧结构是这样的:

django 1.3.1 
server
      /node/
            admin.py, functions.py, models.py
      /templates/
                 index.html
      /static/
      /manage.py
      /settings.py
      /urls.py

在 1.7.4 中是这样的:

django 1.7.4
server
      /server/
              settings.py, urls.py, views.py
      /node/
            admin.py, functions.py, models.py, views.py
      /templates/
                 index.html
      /static/
      /manage.py

以下是该项目的详细信息:

functions.py

@csrf_exempt
def register(request):

@csrf_exempt
def login(request):

@csrf_exempt
def forgot_password(request):

models.py

class UserProfile(models.Model):

urls.py:

from django.conf.urls import patterns, include, url
from server import views
from node.functions import *

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^$', views.index_view),
    # url(r'^index/$', views.indexView),

    url(r'^admin/', include(admin.site.urls)),
    url(r'^register/', register),
    url(r'^login/', login),
    url(r'^forgot_password/', forgot_password),
)

views.py

from django.shortcuts import render
from django.http import HttpResponse

def index_view(request):
    return HttpResponse("Hello, World")

def indexView(request):
    return render(request, 'index.html')

settings.py

import os

DEBUG = False
TEMPLATE_DEBUG = DEBUG

__file__ = os.getcwd()
PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))

ALLOWED_HOSTS = ['.example.com', '.exmaple.com.']

AUTH_PROFILE_MODULE = 'node.UserProfile'

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'db',
        'USER': 'user',
        'PASSWORD': 'pass',
        'HOST': '',
        'PORT': '',
    }
}

TIME_ZONE = 'America/Chicago'
LANGUAGE_CODE = 'en-us'
SITE_ID = 1
USE_I18N = True
USE_L10N = True
MEDIA_ROOT = os.path.join(PROJECT_ROOT, "media")
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(PROJECT_ROOT, "static")
STATIC_URL = 'http://example.com/static/'
ADMIN_MEDIA_PREFIX = '/admin/media/'
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
SECRET_KEY = ‘xxx'

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

ROOT_URLCONF = 'server.urls'

TEMPLATE_DIRS = (
     os.path.join(PROJECT_ROOT, 'templates'),
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'node',
    'django.contrib.gis',
)

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

# Templates directory
REGISTRATION_TEMPLATES_DIR = 'registration/'

AUTHENTICATION_BACKENDS = (
    'node.auth_backends.CustomBackend',
)

GDAL_LIBRARY_PATH = '/usr/local/lib/libgdal.so'

TEST_RUNNER = 'django.test.runner.DiscoverRunner'

谢谢

【问题讨论】:

  • 我不知道 500。你可以通过设置 DEBUG=True 来查看。对于 404,请在 TEMPLATE_LOADER 下检查您的设置
  • 感谢 Jerry,对于 404,TEMPLATE_DIRS 中的路径错误。它应该是这样的:/path-to/example.com/server/templates,但不知何故它是/path-to/example.com/templates。因为 debug=true 以前不起作用,所以我看不到错误详细信息。我改成os.path.join(PROJECT_ROOT, 'server/templates')之后就没事了。

标签: python django


【解决方案1】:

试试 DEBUG = True !

Server Error (500) 是一个后端错误(逻辑!),DEBUG = True 会详细说明错误及其解决方案。

【讨论】:

  • 起初,我想让你知道我之前尝试过 Debug=True 但只能看到这些词:“Server Error (500)”,仅此而已,没有显示错误详细信息,这就是为什么我不知道如何在没有详细信息的情况下解决问题并在此处发布问题的原因。但刚才我决定深入挖掘,找出为什么没有出现错误详细信息。我确实在设置中进行了一些更改,最后出现了错误详细信息页面,因此该错误现在得到了修复。谢谢。
【解决方案2】:

正如您提到的结构已更改,因此您收到此错误,我建议您在虚拟环境中运行基于 1.3 构建的项目。 谢谢

【讨论】:

  • 它在 1.3 上运行。现在问题已解决。无论如何,谢谢。
猜你喜欢
  • 2017-06-06
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 2017-11-14
  • 1970-01-01
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多