2011-08-30 215 views
31

我一直在搞新的collectstatic命令,並得到它爲我的正常頁面工作。也就是說,我可以在此位置加載我的css http://localhost:8000/static/css/main.css。但是,我的django管理員的css似乎沒有出現。Django管理員CSS丟失

當我導航到管理員css位置http://localhost:8000/static/admin/css/base.css時,出現404頁面,但找不到以下錯誤:/home/nai/GitProjects/cats/django-trunk/django/contrib/admin/media/css/base.css" does not exist。在Django-trunk中看,我從來沒有/home/nai/GitProjects/cats/django-trunk/django/contrib/admin/media/文件夾開始。

這是不是很奇怪?

在任何情況下,在我的靜態文件夾中,有一個admin文件夾以及隨附的css,img和js文件夾,這是我在運行collectstatic時創建的,base.css的url似乎指向該位置。

這發生在我的django開發服務器上。下面是一些片段中的bug狩獵幫助:

網址

33 # In order for Dev Server to serve media files for the frontend site. 
34 urlpatterns += staticfiles_urlpatterns() 
35 
36 try: 
37  if settings.DEBUG: # defined in manage.py when the first arg is "runserver" 
38   urlpatterns += patterns('', 
39   (r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}), 
40   (r'^media-admin/(?P<path>.*)$', 'django.views.static.serve',{'document_root': os.path.join(settings.MEDIA_ROOT, '..', settings.ADMIN_MEDIA_PREFIX)}), 
41  ) 
42 except NameError: 
43  pass 

我認爲它可能是在我的網址文件做線40,但不斷變化的媒體管理員靜態/管理didnt幫幫我。

設置

 58 ADMIN_MEDIA_PREFIX = '/static/admin' 
    69 STATIC_ROOT = os.path.join(os.path.abspath(os.path.join(PROJECT_ROOT, '..', MEDIA_DIR, 'static')), '') 
    70 
    71 # URL prefix for static files. 
    72 # Example: "http://media.lawrence.com/static/" 
     73 STATIC_URL = '/static/' 
    74 
    75 # Additional locations of static files. Global files are stored in here 
    76 STATICFILES_DIRS = (
    77  os.path.join(os.path.abspath(os.path.join(PROJECT_ROOT, '..', 'proj_public', 'static', 'proj')), ''), 
    78 ) 
    79 
+0

錯誤竟然是別人完全相關的東西。 。代碼沒有錯,因爲它證明了。 – super9

+6

請問您可以發佈什麼問題。我被卡住完全相同的問題。 –

回答

16

django建議使用其他web服務器而不是wsgi部署靜態文件。

  1. 變化settings.py,設置

    STATIC_ROOT = '靜態'

  2. 運行python manage.py collectstatic

    然後將其複製Django管理靜態filse到/path/to/project/static/

  3. 配置你靜態文件服務器

    如果你使用nginx的,你可以添加一些配置是這樣的:

    location /static/ {        
        alias /path/to/project/static/; 
        expires modified +1w;       
    } 
    
  4. 重裝你的文件服務器

現在,你可以訪問你的靜態文件。

2

你需要在你ADMIN_MEDIA_PREFIX設置結尾的斜線。

更改爲:

ADMIN_MEDIA_PREFIX = '/static/admin/' 
+0

非常感謝,但是這個錯誤與我的開發環境有關。 – super9

+0

奇怪的是,如果我沒有結尾的斜線,管理模板將完全錯誤(鏈接爲「{{ADMIN_MEDIA_PREFIX}} css/etc」)。 –

26

在Django的1.4 ADMIN_MEDIA_PREFIX已被棄用。下面是我跟着趕上這些有點最近的Django改變步驟:

  1. settings.py,加django.contrib.staticfilesINSTALLED_APPS

  2. settings.py限定STATIC_URL - 在staticfiles應用程序將沒有它的運行。在使用runserver時,它們將得到神奇的處理,但是在部署時,這需要一個可以通過瀏覽器獲取這些資源的位置。

我認爲這就是它的全部。

+0

對我來說,只需在INSTALLED_APPS(settings.py)中包含'django.contrib.staticfiles'即可解決問題。有關我的環境的其他一切與django生成的默認項目基本相同。 – warchinal

16

我使用Django 1.4.3

什麼也沒有爲我工作: 不管我多麼編輯ADMIN_MEDIA_PREFIX settings.py中,我注意到了Django管理頁面生成的HTML沒有變化。當我查看源代碼時,它總是說/media/admin/base.css。

什麼DID適合我。/django/contrib/admin/static/複製「管理」文件夾並將其粘貼到我的項目「媒體」文件夾

現在,它的偉大工程。

+1

快速而骯髒。也爲我工作。 – htmldrum

+9

您也可以在配置文件中添加'Alias/static/admin/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin'。 – Kinka

+0

金卡的路是最好的!謝謝! – spikeyang

0

我使用廚師在AWS Ubuntu服務器上自動構建我的django服務器。這篇文章幫助,但我清盤做是對目錄添加到程序包管理靜態頁面的local_setings.py: https://github.com/jaycrossler/geoq-chef-repo/blob/master/cookbooks/geoq/templates/default/local_settings.py.erb#L16

(added to local_settings.py or to settings.py): 

STATICFILES_DIRS = ('<%= node['geoq']['virtualenv']['location'] %>/local/lib/python2.7/site-packages/django/contrib/admin/static/',) 

這導致local_settings.py有:

STATICFILES_DIRS = ('/var/lib/geoq/local/lib/python2.7/site-packages/django/contrib/admin/static/',) 

請注意,如果您的STATICFILES_DIRS中已有其他項目,則可能需要追加到列表中,而不是覆蓋它。

-1

在settings.py 不要使用元組的

STATICFILES_DIRS =( os.path.join(BASE_DIR, 'static'), )

你應該使用列表中,這樣

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