django - 使用 create-react-app 自定义静态文件路径?

标签 django reactjs amazon-web-services amazon-s3 npm-scripts

我开发 Django-React 应用程序已经有一段时间了,今天终于把它推送到了 Heroku。我使用了在 DjangoCon-talk 中看到的一种技术,从 Django 模板 View 为我的 SPA 提供服务。我手动构建react-app,然后定位index.html。我还使用 AWS S3 来存储我的静态文件,这就是我遇到的问题。

当我推送到 Heroku 时,collectstatic 会将我的静态文件添加到 AWS。但是,我访问这些静态文件的唯一方法是推送应用程序,从 AWS 复制静态 URL,将它们粘贴到我的 index.html 中的样式表/脚本标签中,然后推送再次。

有没有办法在运行npm run build时动态创建这些?

类似https://my-bucket.s3.amazonaws.com/static/js/{my_js_file}.chunk.js

如果这是不可能的,是否还有其他解决方案?提示将不胜感激。

最佳答案

我通过捕获所有以“static”开头的路径并将它们重定向到存储桶来解决这个问题。

以下内容在我的 urls.py 中,用于使用“static”重定向路径,并将其余部分翻过来进行 react 。对于其他情况,您可以添加您的 api 地址等:

urlpatterns += [
    re_path('^static', redirect_static),
    re_path('.*', render_react),
]

以下是redirect_static函数/ View :

def redirect_static(request):
    return redirect(f"https://<bucket_address>{request.path}")

关于django - 使用 create-react-app 自定义静态文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63020877/

相关文章:

javascript - React-Bootstrap的服务端渲染,意外的token错误

reactjs - 如何使用 VS Code devcontainers 在react.js 中设置热重载

python - 在 Django 中向 QuerySet 添加文字值

python - 即使用户超时, View 也会完成吗?

django - Paypal 账户创建 : No redirection to PayPal

amazon-web-services - 将数据从 Amazon Redshift 迁移到 DynamoDB

amazon-web-services - 为什么 CloudFront 有时会提供 gzip 而不是 br,当两者都启用时?

python - Django 内部 API 客户端/服务器身份验证与否?

javascript - 尝试使用nodejsexpress打开网页时出错

amazon-web-services - 如果值不存在,dynamodb 是否支持 SET 操作上的原子计数器?