Джанго, не признающий путь MEDIA_URL?

Таким образом, я пытаюсь разбудить TinyMCE и работаю на простой функции представления, но путь к tiny_mce.js файлу завинчен. Файл расположен в/Users/home/Django/tinyMCE/media/js/tiny_mce/tiny_mce.js. Я полагаю, что/media/js/tiny_mce/tiny_mce.js правилен, поскольку у сервера развития нет доступа к файлам выше корня папки проекта Джанго. На предоставленной странице это говорит в отладчике, что файл JavaScript не был найден. Это вызвано тем, что это пыталось просмотреть/js/tiny_mce/tiny_mce.js, не обращаясь к/media/части имени пути.

Так или иначе вот отрывок сценария для JavaScript в шаблоне под названием 'simple.html'. <script type="text/javascript" src="{{ MEDIA_URL }}/js/tiny_mce/tiny_mce.js"></script> <script type="text/javascript"> tinyMCE.init({ mode : "textareas", theme : "simple" }); </script>

И это - то, на что жизненно важные части моих параметров настройки похож.

MEDIA_ROOT = os.path.join(_base, 'media')
MEDIA_URL = 'http://127.0.0.1:8000/media/'
ADMIN_MEDIA_PREFIX = '/media/'

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'tinymce',
)
8
задан rk919 11 January 2010 в 04:18
поделиться

4 ответа

Вы можете либо передавать его на шаблон вручную, поскольку другие предложили или убедитесь, что вы используете Requestexcontext вместо простого контекста. RequestContext автоматически заполнит контекст определенные переменные, включая Media_URL и другие, связанные с носителями.

Пример от документов:

def some_view(request):
    # ...
    return render_to_response('my_template.html',
                              my_data_dictionary,
                              context_instance=RequestContext(request))
13
ответ дан 5 December 2019 в 04:31
поделиться

Определяемая пользователем функция имеет несколько ограничений, например, использование инструкций DML и т.д.

-121--1193734-

В Ruby 1.8/1.9 как sort , так и sort _ by реализованы в C, это грубый эквивалент того, как это работает:

Начните с [1,2,3,4] и вызовите sort _ по {rand} :

  1. (я изобрел несколько случайных чисел):

    Создается массив кортежей: [[0,12232, 1], [0,53434, 2], [0,333, 3], [0,99, 4]]

    В примерно эквивалентном Ruby-коде это: [1,2,3,4] .map {| x | [rand, x]}

  2. Быстрая сортировка Ruby выполняется для массива на основе первого элемента: (обратите внимание, что внутренняя реализация далеко не тривиальна и содержит тонну оптимизации для уже упорядоченных массивов и таковых)

    [[0.12232, 1],[0.333, 3],[0.53434, 2],[0.99, 4]]
    

    В Ruby этот шаг: ary.sort {| x, y | x [0] < = > y [0]}

  3. Указатели копируются из нового отсортированного массива в правильное положение в исходном массиве.

    [1,3,2,4]
    

    В Ruby этот шаг: ary.map {| x, y | y}

Этот метод иногда называют « преобразованием Шварцяна ». Кэширование означает, что дорогостоящая операция выполняется не более N раз. Это очень эффективный способ рандомизации массива.

Примечание : array.shuffle! будет наиболее эффективным встроенным способом перетасовки массива (на месте), поскольку он использует современную версию Фишера-Йейтса :

static VALUE
rb_ary_shuffle_bang(VALUE ary)
{
    long i = RARRAY_LEN(ary);

    rb_ary_modify(ary);
    while (i) {
  long j = rb_genrand_real()*i;
  VALUE tmp = RARRAY_PTR(ary)[--i];
  RARRAY_PTR(ary)[i] = RARRAY_PTR(ary)[j];
  RARRAY_PTR(ary)[j] = tmp;
    }
    return ary;
}
-121--1660238-

Похоже, что ars ответил на ваш реальный вопрос... Но вы столкнетесь с другой проблемой: MEDIA _ URL должен отличаться от ADMIN _ MEDIA _ PREFIX . В противном случае приоритет будет иметь ADMIN _ MEDIA _ PREFIX . Обычно это можно исправить, изменив значение ADMIN _ MEDIA _ PREFIX на /admin-media/.

7
ответ дан 5 December 2019 в 04:31
поделиться

Похоже, что вы используете отладочный сервер (ваша url - http://127.0.0.1:8000/... .) . Вы установили статическую службу в urls.py?

if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes':True}),
)

Опции 'show_indexes':True позволяют просматривать ваши носители. Зайдите в свой корень медиа http://127.0.0.1:8000/media/ и увидите, что там что-то есть

.
22
ответ дан 5 December 2019 в 04:31
поделиться

У вас есть процессор медиа-контекста в ваших настройках?

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.media',
)

Вы также можете попробовать вывести следующие параметры в настройках, чтобы увидеть, выявляют ли сообщению отладки:

TEMPLATE_DEBUG = True
6
ответ дан 5 December 2019 в 04:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: