Django статические авто-префиксы URL

Я видел довольно много вопросов и ответов на эту тему, но ни один из них не помог мне. Итак, проблема в том, что ни один из статических файлов не обслуживается до тех пор, пока я не добавлю вручную '/' перед любым адресом в адресах в html. И я всегда получаю двойной префикс папки статических файлов на адресах, например: 'content/static/content/static/js/my.js'

Последняя проблема, которую я не могу преодолеть, это то, что это поле обрезки изображения не работает, я предполагаю, что из-за двойного префикса, написанного выше, не получается получить правильный URL-адрес изображения. Я не могу это исправить, потому что механизм написан внутри https://github.com/jonasundderwolf/django-image-cropping. Есть ли способ изменить это поведение django? В поле редактора у меня была та же проблема, но я исправил ее вручную, переписав метод save(), изменив URL загруженных изображений, чтобы они начали отображаться, но он не работает автоматически, и я не могу понять, почему. Помогите, пожалуйста.

Я пробовал {% static 'some_file' %}, иногда он работает, иногда нет, так что это не решение.

Итак, моя структура проекта Django такова:

  1. проект
    • содержание
      • шаблоны
      • статический
      • так далее
    • проект

Проект / urls.py:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include ('content.urls')),
    url(r'^redactor/', include('redactor.urls')),
]

from django.conf.urls import patterns
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns += staticfiles_urlpatterns()

settings.py:

INSTALLED_APPS = (
    'content',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'redactor',
    'pure_pagination',
    'django_cleanup',
    'image_cropping',
    'easy_thumbnails',
)

from easy_thumbnails.conf import Settings as thumbnail_settings
THUMBNAIL_PROCESSORS = (
    'image_cropping.thumbnail_processors.crop_corners',
) + thumbnail_settings.THUMBNAIL_PROCESSORS

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

STATIC_URL = '/content/static/'

STATICFILES_FINDERS = ( 
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    os.path.join(
        os.path.dirname(__file__),
    ),
    "C:/Work/Snejana/magazine31.01.2016/content/static/upload_images",
    "C:/Work/Snejana/magazine31.01.2016/content/static",
    "C:/Work/Snejana/magazine31.01.2016",
)

одна модель из content/models.py:

class Author(models.Model):

    class Meta:
        verbose_name = 'Автора'
        verbose_name_plural = 'Авторы'

    author_name              = models.CharField(max_length=200, verbose_name=u'Имя автора')
    regalias                 = models.CharField(max_length=200, blank=True, verbose_name=u'Регалии')
    description              = RedactorField(blank=True,
                                             verbose_name=u'Описание автора',
                                             redactor_options={'lang': 'en', 'focus': 'true'},
                                             upload_to='content/static/upload_images/',
                                             allow_file_upload=True,
                                             allow_image_upload=True)
    photo_full               = models.ImageField(upload_to="content/static/upload_images/",
                                                 verbose_name=u'Фото',
                                                 default=None,
                                                 blank=True,
                                                 null=True)
    photo_thumbnail          = models.ImageField(upload_to="content/static/upload_images/",
                                                 verbose_name=u'Фото маленькое',
                                                 default=None,
                                                 blank=True,
                                                 null=True)
    publications_of_author   = models.ForeignKey('Publication', blank=True, null=True, verbose_name=u'Публикации автора')
    cropping1 = ImageRatioField('photo_full', '600x400')
    cropping2 = ImageRatioField('photo_thumbnail', '100x80')

И последний, admin.py:

class AuthorAdmin(ImageCroppingMixin, admin.ModelAdmin):
    fieldsets = [
        ('Информация об авторе', {'fields': ['author_name', 'description', 'photo_full', 'photo_thumbnail','cropping1', 'regalias'], 'classes': ['collapse']}),
    ]
    readonly_fields = ('photo_thumbnail',)
    inlines = [AuthorsPublicationsInline]

    class Media:
        js = ['http://code.jquery.com/jquery-latest.min.js', 'js/collapsed_stacked_inlines.js',]

1 ответ

Ваш upload_to атрибуты не должны включать префикс; они относятся к MEDIA_ROOT.

photo_full = models.ImageField(upload_to="upload_images/", ...)
Другие вопросы по тегам