0

staticfiles은 관리자의 정적 파일을 STATIC_ROOT으로 복사하지 못합니다. 나는 한 번 django.contrib.staticfilesINSTALLED_APPS에 포함 시키면 admin의 정적 파일 (다른 모든 파일은 물론)을 자동으로 복사한다는 인상을 받았다. 그러나 그것은 그럴 듯하지 않습니다. 이 오히려 더러운 것 같습니다 그러나Django.staticfiles가 관리 파일을 수집하지 않음

location /static/admin { 
    root /webapps/hello_django/lib/python2.7/site-packages/django/contrib/admin/; 
} 

:에 다스와 관련된 질문을 검색에서

는 SO가 허용 방법은 당신의 nginx로 virtualenv 'D 관리 경로로 하드 코드 된 경로, such as here을 포함 할 것 같다 나에게.

나는 또한 언급해야하는 즉

$ ./manage.py findstatic admin 
    Found 'admin' here: 
    /<path to venv>/lib/python2.7/site-packages/django/contrib/admin/static/admin 

내가 여기서 뭔가를 놓치고 있습니까, 나를 위해 측정기를 작업?

+0

'collectstatic'은'admin' 콘텐츠를 수집하여'STATIC_ROOT' ('STATIC_URL'이 아니라)에 놓아야합니다. 'collectstatic'을 실행할 때'STATIC_ROOT' 아래에 어떤 내용이 보이나요? – AndrewS

+0

INSTALLED_APPS 목록에 'django.contrib.admin'항목이 있습니까? https://docs.djangoproject.com/en/dev/ref/settings/#static-files 문서에 따라 django는 collectstatic을 실행할 때 STATIC_ROOT 디렉토리에있는 모든 정적 파일을 가져옵니다. django 설치시 django/contrib/admin/static 경로가 있는지 확인하십시오. – Gaurav

답변

0

settings.py 분할 방식에 미묘한 문제가 있었다 밝혀졌습니다. 누군가가 구글에서 여기에오고, 나는이 settings.py 분할에 deploydjango.com 's 및 전략을 다음되었다, 그러나 ROOT_DIR는 다음

STATICFILES_DIRS = (
    ABS_PATH('apps', 'example_app', 'static'), 
) 
을 설정하여 다음과 같은 구조 즉, 프로젝트의 측면에서

$ tree -L 2 
. 
├── static 
├── apps 
└── project 
    ├── __init__.py 
    ├── settings 
    │   ├── __init__.py 
    │   ├── base.py 
    │   ├── dev.py 
    │   └── prod.py 
    ├── urls.py 
    └── wsgi.py 

정의되고 있었다

ROOT_DIRproject/으로 설정됩니다. ABS_PATH 함수는 ROOT_DIR을 기반으로하는 경로를 정의하므로 apps/ 폴더는 표시되지 않습니다 (앞에는 '..'이어야합니다).

해결 방법은 물론 apps/ 폴더를 project/ 폴더 안에 옮기는 것이 좋습니다. 나는. 다음과 같이 올바른 구조는 다음과 같습니다

$ tree -L 2 
. 
├── static 
└── project_name 
    ├── __init__.py 
    ├── apps    # <-- apps moved here 
    │   └── example_app 
    ├── settings 
    │   ├── __init__.py 
    │   ├── base.py 
    │   ├── dev.py 
    │   └── prod.py 
    ├── urls.py 
    └── wsgi.py 

나는이 문제가 정말이 구조는 "모범 사례"(some disagree하지만) 일부 사람들이 볼 수 그러나 때문에, 내가 일을 한 방식에 묶여 실현, I 이 사람이 도움이되기를 바랍니다!

1

모든 설정이 settings.py에 설정되어 있는지 확인하십시오. 정적 파일이 프로젝트 루트 폴더의 static 디렉터리 아래에 있다고 가정합니다.

import os 
import sys 

STATIC_ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static/') 
STATIC_URL = '/static/' 
ADMIN_MEDIA_PREFIX = '/static/admin/' 

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

INSTALLED_APPS = (
# default apps 
'django.contrib.staticfiles', 
# etc 
) 
STATICFILES_DIRS =() 

의 nginx 설정 :

location /static { 
     alias /path_to_your_project/static; 
     access_log off; 
     expires  max; 
} 
+0

저는 1.5 세 였고'ADMIN_MEDIA_PREFIX' [https : //docs.djangoproject]에 대한 인상을 받았습니다.com/en/dev/releases/1.4/# django-contrib-admin) 1.4에서. – gregoltsov

+0

이 예제는 라이브 서버에서 Django 1.2에 유효합니다. – nickzam

+0

의견을 보내 주셔서 감사 드리며 작동 설정의 예가 있지만 장고에 대한 새로운 문제로 인해 문제가 발생했습니다. 나는 그 문제가 무엇인지 설명하는 나의 대답을 덧붙였다. 어쨌든 upvote를 가져라! – gregoltsov

관련 문제