我将 Django 设置为将所有静态文件存储在 S3 上,并使用“collectstatic”命令复制所有管理文件,并且当我访问管理站点时,CSS 和 JS 文件均正确源自 S3 存储桶。例如:
https://bucket.s3.amazonaws.com/static/admin/css/base.css
https://bucket.s3.amazonaws.com/static/admin/js/vendor/jquery/jquery.js
Run Code Online (Sandbox Code Playgroud)
但是当它尝试访问字体文件 .woff 时,我收到以下错误:
Access to font at 'https://bucket.s3.amazonaws.com/static/admin/fonts/Roboto-Light-webfont.woff' from origin 'http://localhost:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Run Code Online (Sandbox Code Playgroud)
奇怪的是,它让我可以访问除字体文件之外的所有文件:
这是我的登录操作的样子并且工作正常:
export const login = createAsyncThunk(
'auth/login',
async (data, thunkAPI) => {
const response = await API.login(data)
//Store user data in local storage
Storage.save('user', response.data)
// Add token to HTTP headers
API.setToken(response.data.key)
return response.data
})
Run Code Online (Sandbox Code Playgroud)
现在我需要执行注销功能,但是当使用“createSlice()”时,我无法选择添加副作用,因为它直接进入减速器(Redux 文档说我们不应该向减速器添加任何副作用)
// Slice
const authSlice = createSlice({
name: 'auth',
initialState: {
user: null
},
reducers: {
// Logout
logout: (state, action) => {
state.user = null
},
},
extraReducers: {
[login.fulfilled]: (state, action)=>{
state.user = action.payload
},
}
})
Run Code Online (Sandbox Code Playgroud)
所以我想我可以使用 createAsyncThunk 函数在它到达减速器之前执行副作用:
export const …Run Code Online (Sandbox Code Playgroud) 当使用 Easy Thumbnails 时,我知道您可以通过将其添加到您的 settings.py 来全局配置所有图像(甚至带有 alpha 的 PNG)以转换为 JPG
THUMBNAIL_TRANSPARENCY_EXTENSION = 'jpg'
Run Code Online (Sandbox Code Playgroud)
但问题是我不想强制所有模型中的所有图像都转换为 JPG,因为我有一些模型需要带有 alpha (png) 的图像。
我想要的是强制单个模型中的单个字段将所有图像转换为 JPG,无论它们是否是启用了 Alpha 的 PNG。
class Article(BaseModel):
title = models.CharField(max_length=255, unique=True)
image = ThumbnailerImageField(upload_to='blog/articles/image')
Run Code Online (Sandbox Code Playgroud)
我想要这个,因为很多人上传启用了 Alpha 的 PNG,这会阻止缩略图将它们压缩为 JPG,从而使许多缩略图保留为 PNG (500kb),而不是转换为 JPG (70kb)。
如何指定始终将这些文章图像转换为 JPG?