Django Сайт не может найти стили администратора или мультимедийные файлы, когда Debug = False - PullRequest
0 голосов
/ 27 февраля 2020

У меня проблемы с запуском моего django сайта с debug = False.

Информация:

  • В настоящее время Debug = False
  • Я работаю на своем локальном хосте
  • Я использую трясогузку. Но из того, что я прочитал, проблемы, с которыми я сталкиваюсь, связаны с Django.

Проблема:

  • Когда я go захожу на сайт на моем локальном хосте, он может найти stati c файлы, но не может получить никаких медиа-файлов. Пример: GET http://127.0.0.1:8000/media/images/block-alphabet-abc.width-400.png Internal Server Error

  • Когда я захожу в админку, в некоторых местах внешний вид отключается (например, css компоненты могут отсутствовать).

  • Когда я go чтобы отредактировать страницу, внешний вид все еще отключен, а инструмент веб-разработчика содержит 500 ошибок, говорящих о том, что отсутствует http://127.0.0.1:8000/static/wagtailadmin/js/date-time-chooser.js?v=3a1ab45f.

Что Я пробовал:

  • Я пробежал python manage.py collectstatic. Однако это не создает каталог мультимедиа. Он добавляет файлы администрирования трясогузки, но ни один из них не имеет в конце небольшого числа ha sh.
  • Я пытался запустить python manage.py compress, но я получаю сообщение об ошибке, что ни один из шаблонов есть тег сжатия (это правда).
  • Я добавил протоколирование, но я не уверен, как устранить ошибки.

Вопрос:
Как мне создать каталог мультимедиа? Как мне добавить файлы администрирования трясогузки в правильном формате, чтобы их можно было найти?

STATI C & МЕДИА-URL в settings.py

# Static files (CSS, JavaScript, Images)

STATICFILES_FINDERS = [
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

STATICFILES_DIRS = [
    os.path.join(PROJECT_DIR, 'static'),
]

# ManifestStaticFilesStorage is recommended in production, to prevent outdated
# Javascript / CSS assets being served from cache (e.g. after a Wagtail upgrade).
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'

STATIC_ROOT = "/var/www/html/static/"
STATIC_URL = '/static/'

MEDIA_ROOT = "/var/www/html/media/"
MEDIA_URL = '/media/'

Верх базы. html Шаблон, использующий STATIC_URL:

{% load static wagtailuserbar %}
{% load wagtailcore_tags %}
{% load wagtailcore_tags site_tags %}
{% load wagtailcore_tags wagtailimages_tags %}

<!DOCTYPE html>
<html class="no-js" lang="en">
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge">


        <title>
            {% block title %}
            {% if self.seo_title %}{{ self.seo_title }}{% else %}{{ self.title }}{% endif %}
            {% endblock %}
            {% block title_suffix %}
            {% with self.get_site.site_name as site_name %}
            {% if site_name %} | {{ site_name }}{% endif %}
            {% endwith %}
            {% endblock %}
        </title>


        <meta name="description" content="" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <link href="{{ STATIC_URL }} /static/bootstrap-3.4.1-dist/css/bootstrap.css" rel="stylesheet" type="text/css"/>
        <link href="{{ STATIC_URL }} /static/bootstrap-3.4.1-dist/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
        <script type="text/javascript" src="{{ STATIC_URL }} /static/jquery-3.3.1.min.js"></script>
        <script type="text/javascript" src="{{ STATIC_URL }} /static/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>

    {% get_global_settings request=request as global_settings %}
    {% if global_settings.site_logo %} 
        {% image global_settings.site_logo width-2000 as site_logo %}
        <link rel="icon" href="{{ site_logo.url }}" type="image/png" sizes="16x16">
    {% endif %}

        {# Global stylesheets #}
        <link rel="stylesheet" type="text/css" href="{% static 'css/sitename.css' %}">

        {% block extra_css %}
        {# Override this in templates to add extra stylesheets #}
        {% endblock %}

    </head>

Журналы:
Эти журналы показывают, что происходит, когда я go редактировать страницу в панели администратора.

Exception while resolving variable 'field_classes' in template 'wagtailadmin/edit_handlers/single_field_panel.html'.
Traceback (most recent call last):
  File "/<local-directory-to-app>/env/lib/python3.5/site-packages/django/template/base.py", line 829, in _resolve_lookup
    current = current[bit]
  File "/<local-directory-to-app>/env/lib/python3.5/site-packages/django/template/context.py", line 83, in __getitem__
    raise KeyError(key)
KeyError: 'field_classes'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/<local-directory-to-app>/env/lib/python3.5/site-packages/django/template/base.py", line 835, in _resolve_lookup
    if isinstance(current, BaseContext) and getattr(type(current), bit):
AttributeError: type object 'Context' has no attribute 'field_classes'

Эти журналы показывают, что происходит, когда я go перехожу на страницу сайта переднего плана.

Exception while resolving variable 'STATIC_URL' in template 'home/home_page.html'.
Traceback (most recent call last):
  File "/<local-directory-to-app>/env/lib/python3.5/site-packages/django/template/base.py", line 829, in _resolve_lookup
    current = current[bit]
  File "/<local-directory-to-app>/env/lib/python3.5/site-packages/django/template/context.py", line 83, in __getitem__
    raise KeyError(key)
KeyError: 'STATIC_URL'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/<local-directory-to-app>/env/lib/python3.5/site-packages/django/template/base.py", line 835, in _resolve_lookup
    if isinstance(current, BaseContext) and getattr(type(current), bit):
AttributeError: type object 'RequestContext' has no attribute 'STATIC_URL'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/<local-directory-to-app>/env/lib/python3.5/site-packages/django/template/base.py", line 843, in _resolve_lookup
    current = current[int(bit)]
ValueError: invalid literal for int() with base 10: 'STATIC_URL'

...

Traceback (most recent call last):
  File "/<local-directory-to-app>/env/lib/python3.5/site-packages/django/template/base.py", line 850, in _resolve_lookup
    (bit, current))  # missing attribute
django.template.base.VariableDoesNotExist: Failed lookup for key [STATIC_URL] in [{'True': True, 'None': None, 'False': False}, {'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'csrf_token': <SimpleLazyObject: <function csrf.<locals>._get_val at 0x7efe01e64598>>, 'request': <WSGIRequest: GET '/media/images/twitter-logo.width-40.png'>, 'user': <SimpleLazyObject: <function AuthenticationMiddleware.process_request.<locals>.<lambda> at 0x7efe01e64400>>, 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7efe01e65128>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7efe01e509e8>}, {}, {'request_path': '/media/images/twitter-logo.width-40.png', 'exception': '"/var/www/html/media/images/twitter-logo.width-40.png" does not exist'}]
Exception while resolving variable 'page' in template '404.html'.
Traceback (most recent call last):
  File "/<local-directory-to-app>/env/lib/python3.5/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/<local-directory-to-app>/env/lib/python3.5/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/<local-directory-to-app>/env/lib/python3.5/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/<local-directory-to-app>/env/lib/python3.5/site-packages/django/views/static.py", line 42, in serve
    raise Http404(_('"%(path)s" does not exist') % {'path': fullpath})
django.http.response.Http404: "/var/www/html/media/images/walking-in-tunnel.width-2000.png" does not exist

1 Ответ

1 голос
/ 27 февраля 2020
Сервер запуска

Django не должен использоваться в производстве. Установив DEBUG на True, вы теперь работаете в производственной среде. runserver не будет обслуживать мультимедийные файлы , поэтому, если вы хотите mimi c настройки в стиле сервера на компьютере разработчика, вам нужно установить сервер производственного типа, такой как Apache и установите его так, чтобы он служил медиа-файлам, как обычно, с правильным псевдонимом. Вам также необходимо создать псевдоним для файлов stati c.

...