Django创建静态文件夹



当我在Google Cloud Storage上用' collectstatic'上传静态数据时,它会将文件上传到bucket的主根目录,而不是一个名为"/static/"的文件夹中,因此生产端的web无法读取静态数据。如何创建文件夹"/static/"把文件上传到全球定位系统

这是我的设置:

ALLOWED_HOSTS = ["*"]
DEBUG = True
INSTALLED_APPS += ["django_extensions", ]
DEFAULT_FILE_STORAGE = "storages.backends.gcloud.GoogleCloudStorage"
STATICFILES_STORAGE = "storages.backends.gcloud.GoogleCloudStorage"
GS_BUCKET_NAME = "static-bucket"
GS_MEDIA_BUCKET_NAME = "bucket-name"

加载静态文件GCS

进入GCP: Cloud Storage (GCS),点击CREATE BUCKET(根据需要填充)

一旦创建,如果你想让它像你的网站的CDN(存储你的静态文件,如css,图像,视频等),你可以使它公开

转到新创建的存储桶转到权限,然后单击添加成员添加新成员"allUsers"云存储-存储对象查看器"参考:https://cloud.google.com/storage/docs/quickstart-console主要参考文献:

https://django-storages.readthedocs.io/en/latest/backends/gcloud.htmlhttps://medium.com/@umeshsaruk/upload-to-google-cloud-storage-using-django-storages-72ddec2f0d05前提步骤

进入GCP: Cloud Storage (GCS),点击CREATE BUCKET(根据需要填充)

一旦创建,如果你想让它像你的网站的CDN(存储你的静态文件,如css,图像,视频等),你可以使它公开

转到新创建的存储桶转到权限,然后单击添加成员添加新成员"allUsers"云存储-存储对象查看器"参考:https://cloud.google.com/storage/docs/quickstart-console

第一步1(更容易和更快,但需要不断手动复制文件到GCS)

在settings.py中配置Django的静态文件设置

STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'templates'),
os.path.join(BASE_DIR, "yourapp1", "templates"),
os.path.join(BASE_DIR, "yourapp2", "static"),
os.path.join(BASE_DIR, "watever"),
"/home/me/Music/TaylorSwift/",
"/home/me/Videos/notNsfw/",
]
STATIC_ROOT = "/var/www/mywebsite/"
STATIC_URL = "https://storage.googleapis.com/<your_bucket_name>/"

步骤2如果你有HTML文件或CSS文件访问其他静态文件,确保他们引用这些其他静态文件与此更新的STATIC_URL设置。

In your home.html

{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'home/css/home.css' %}">

在你的home.css文件

background-image: url("../assets/img/myHandsomeImage.jpg");

你可以从我提供的链接中阅读参考文献。

https://django-storages.readthedocs.io/en/latest/backends/gcloud.htmlhttps://medium.com/@umeshsaruk上传- -谷歌云存储-使用django -存储- 72 ddec2f0d05

You home CSS link now will translate to : 
https://storage.googleapis.com/[your_bucket_name]/home/css/home.css

如果你愿意,你可以只放置绝对路径(完整的URL),但这样的配置总是需要你手动更新使用的URL,就像如果你切换到开发模式,只想访问本地的静态文件,而不是从GCS。这会将STATICFILES_DIRS中每个目录中的所有文件复制到STATIC_ROOT目录。

python3 manage.py collectstatic
# or if your STATIC_ROOT folder requires permissions to write to it then:
# sudo python3 manage.py collectstatic

好的,通过stackoverflow搜索后,我看到这个问题已经解决了,我不希望这是一个重复的形式。所以这里是stackoverflow解决方案的链接:从谷歌云存储桶中提供静态文件(用于托管在GCE上的Django应用程序)。

最新更新