【问题标题】:Django, nginx, gunicorn: why on some page gives Server Error (500)?Django,nginx,gunicorn:为什么在某些页面上给出服务器错误(500)?
【发布时间】:2014-11-02 05:21:11
【问题描述】:

完全没有,而是有选择地。

例如函数 random_video 不起作用,而 video_list 起作用。 设置.py

import os
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS, AUTHENTICATION_BACKENDS

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]

SECRET_KEY = 'secret'

DEBUG = False

TEMPLATE_DEBUG = False

ALLOWED_HOSTS = ['.mydomain.ru']

INSTALLED_APPS = ('django.contrib.admin',
                  'django.contrib.auth',
                  'django.contrib.contenttypes',
                  'django.contrib.sessions',
                  'django.contrib.messages',
                  'django.contrib.staticfiles',
                  'django.contrib.sites',
                  'django_youtube',
                  'gdata',
                  'south',
                  'index',
                  'loginza',
                  'users',
                  'embed_video',
                  'for_parse',
                  'taggit',
                  'gunicorn',
)

SITE_ID = 1

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

ROOT_URLCONF = 'myproject.urls'

WSGI_APPLICATION = 'myproject.wsgi.application'

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydatabase',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',  # Set to empty string for localhost.
        'PORT': '',  # Set to empty string for default.
    }
}


SOUTH_MIGRATION_MODULES = {
    'taggit': 'taggit.south_migrations',
}

LANGUAGE_CODE = 'ru-ru'

TIME_ZONE = 'Europe/Moscow'

USE_I18N = True

USE_L10N = True

USE_TZ = True

STATIC_URL = '/static/'
STATIC_ROOT = '/home/myuser/projects/myproject/static/'

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
}

urls.py

from django.conf.urls import patterns, url, include

urlpatterns = patterns('myapp.views',
    # list of the videos
    url(r'^videos/$', 'video_list', name="myapp_video_list"),
    #random video
    url(r'^random/$', 'random_video', name='random_video'),
)

views.py

def video_list(request):
    videos_list = Video.objects.all()
    paginator = Paginator(videos_list, 42)
    page = request.GET.get('page')
    try:
        videos = paginator.page(page)
    except PageNotAnInteger:
        videos = paginator.page(1)
    except EmptyPage:
        videos = paginator.page(paginator.num_pages)

    return render_to_response(
        "django_youtube/videos.html",
        {"videos": videos},
        context_instance=RequestContext(request),
    )

def random_video(request):
    all_video = Video.objects.count()
    video11 = Video.objects.all()[random.randint(0, all_video)]
    video_params = _video_params(request, video11.video_id)
    video_params['video'] = video11
    video11.views += 1
    video11.save(update_fields=['views'])
    return render_to_response(
        "django_youtube/video.html",
        video_params,
        context_instance=RequestContext(request)
    )

在我的项目的 nginx 中记录错误。

[08/Sep/2014:17:15:04 -0400] "GET /youtube/random/ HTTP/1.1" 500 38 "http://mydomain.ru/video/eQIaa3dVKjc/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/37.0.2062.94 Chrome/37.0.2062.94 Safari/537.36"

其余的没有放弃。 域和其他东西被替换了。 如果您需要更多详细信息 - 请写信。

【问题讨论】:

  • 我认为你必须浏览/random/ url,而不是/youtube/random/。您有 /random/ 路径的 url 配置,但没有 /youtube/random/
  • 对不起,没有。但是感谢您的帮助。

标签: python django nginx


【解决方案1】:

好吧,当我学会检查我的代码时??? 错误是他试图获取不存在的视频! Randint 函数给出了一个包含在内的数字。

all_video = Video.objects.count () 
video11 = Video.objects.all () [random.randint (0, all_video)] 

如果它是不存在的视频,那么一切都会崩溃并且必须发出错误。但是我不用处理错误页面,所以nginx发出了他平时的500。

【讨论】:

    猜你喜欢
    • 2014-09-16
    • 2015-01-21
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2020-05-28
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多