django的后台管理页面静态文件如何加载?

我的django项目,主web的静态文件加载正常,但是django自带的administrator管理页面的样式不能加载,以下是我的配置:
setting文件:

STATIC_URL = '/assets/'
STATIC_ROOT = os.path.join(BASE_DIR, 'templates/assets')
"""
STATICFILES_DIRS =( 
                    os.path.join(BASE_DIR, 'templates/assets') ,
                    #os.path.join(BASE_DIR, 'templates') ,
                    #os.path.join(BASE_DIR, 'templates/assets/css') ,
                    #os.path.join(BASE_DIR, 'stock_ana/templates/assets') ,
                    #os.path.join(BASE_DIR, 'stock_ana/assets') ,
                    #os.path.join(BASE_DIR, 'stock_ana/templates') ,
                                        
                   ) #BASE_DIR, 
"""

urls文件:

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^assets/(?P.*)$', static.serve, {'document_root': settings.STATIC_ROOT}, name='assets'),
]

其实很多配置我并没有搞懂,都是百度来的。我有以下问题:
1)部署在iis,STATICFILES_DIRS 启用就不行,非得用STATIC_ROOT 吗?
2)admin.site.urls部署在django的安装目录,静态文件无法找到,如何解决?

  1. IIS里,必须是STATIC_ROOT。本地开发时,是django runserver提供了静态文件管理,IIS上,是IIS做静态文件管理。两者是不一样的
  2. 执行下 python manage.py collectstatic 命令试下。它会将所有的静态文件拷贝至 STATIC_ROOT。

3)urls文件中的url(r'^assets/(?P.*)$', static.serve, {'document_root': settings.STATIC_ROOT}, name='assets'),这个是什么意思?

1)不一定,STATICFILES_DIRS 和 STATIC_ROOT 都可以用来指定静态文件的路径,但是STATIC_ROOT 是用来收集静态文件的,而STATICFILES_DIRS 是用来指定静态文件的路径,所以如果你想要收集静态文件,就需要使用STATIC_ROOT,如果只是想要指定静态文件的路径,就可以使用STATICFILES_DIRS。

2)可以在urls文件中添加一个url来指定admin静态文件的路径,例如:
url(r'^admin/static/(?P.*)$', static.serve, {'document_root': settings.STATIC_ROOT}, name='admin_static')

3)url(r'^assets/(?P.*)$', static.serve, {'document_root': settings.STATIC_ROOT}, name='assets') 这个url的意思是,当用户访问/assets/路径时,会使用static.serve函数来处理,并且把静态文件的根目录设置为settings.STATIC_ROOT,name='assets'表示这个url的名字叫做assets。