我没有为我的JPA应用程序设置CET时区,该应用程序使用AuditingEntityListener来增加创建/最后修改的日期。
我已经尝试过的事情:
在我的application.properties(两种组合)中:
spring.jpa.properties.hibernate.jdbc.time_zone=UTC+1
spring.jpa.properties.hibernate.jdbc.time_zone=CET
Run Code Online (Sandbox Code Playgroud)
为我的JDBC连接添加了时区(两种组合)
spring.datasource.url=jdbc:mysql://host:3306/db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC+1
spring.datasource.url=jdbc:mysql://host:3306/db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=CET
Run Code Online (Sandbox Code Playgroud)
添加了后构建(应用程序级别)
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("UTC+1"));
}
Run Code Online (Sandbox Code Playgroud)
还尝试使用以下方法在数据库级别设置时区:
SET time_zone='+01:00';
Run Code Online (Sandbox Code Playgroud)
无论如何都没有成功,我是否缺少某些东西?
使用@createdDate如下:
编辑
@Data
@Builder
@Entity
@EntityListeners(AuditingEntityListener.class)
@NoArgsConstructor
@AllArgsConstructor
public class OrderHistoryRecord {
@Id
@GeneratedValue
@JsonIgnore
private Long id;
@NotNull
@ManyToOne(fetch = FetchType.LAZY, targetEntity = Order.class)
@JoinColumn(name = "order_id", updatable = false)
@JsonIgnore
private Order order;
@CreatedDate
private Date date;
@Enumerated(EnumType.STRING)
private PaymentStatus paymentStatus;
@Enumerated(EnumType.STRING)
private ShipmentStatus shipmentStatus;
@Enumerated(EnumType.STRING)
private OrderHistoryRecordType type;
}
Run Code Online (Sandbox Code Playgroud) 我今天决定对现有的 Django REST + Angular 应用程序进行 docker 化。网站显示正常,但 CORS 请求被阻止。
从源“ http://localhost: 3000”访问位于“ http://localhost: 8000/branches/1”的 XMLHttpRequest已被 CORS 策略阻止:“Access-Control-Allow-Origin”标头不存在请求的资源。
Angular 应用程序使用 Nginx 进行 Docker 化。我正在使用本教程(下面列出了 docker + compose 文件)。
奇怪的是,我以前也遇到过这个问题,并通过使用djang-cors-headers包解决了它。随着CORS_ORIGIN_ALLOW_ALL = True
,这似乎不再解决问题。
这是否与应用程序现在在容器中运行有关?我为项目提供 dockerfiles 以及下面的 docker-compose 文件。但不确定它们是否相关。
Angular 项目的 Dockerfile:
FROM tiangolo/node-frontend:10 as build-stage
WORKDIR /app
COPY package*.json /app/
RUN npm install
COPY ./ /app/
ARG configuration=production
RUN npm run build -- --output-path=./dist/out --configuration $configuration
# Stage 1, based on Nginx, to have only the …
Run Code Online (Sandbox Code Playgroud) django django-rest-framework docker django-cors-headers angular
我正在 Django REST 中创建这个简单的购物 API。
在内部,我将 ID 用于外键约束,而guuids
被带到外部世界。
对于结帐过程,用户提供他愿意购买的商品 ID 列表。因此,POST 数据中的对象如下所示:
{
assets: [
{
'product': 'd9d5044d-2284-4d15-aa76-2eee3675035b',
'amount': 4
},
....
]
}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下票据/资产模型:
# Ticket
class Ticket(models.Model):
uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='tickets', on_delete=models.CASCADE)
# Assets
class Asset(models.Model):
ticket = models.ForeignKey(Ticket, related_name='assets', on_delete=models.CASCADE)
stock_item = models.ForeignKey(Stock, related_name='stock_item', on_delete=models.SET_NULL, null=True)
amount = models.IntegerField(validators=[MinValueValidator(0)])
Run Code Online (Sandbox Code Playgroud)
序列化程序如下所示:
# Asset serializer
class AssetSerializer(serializers.ModelSerializer):
class Meta:
model = Asset
fields = ('stock_item', 'amount')
# Ticket serializer
class TicketSerializer(WritableNestedModelSerializer):
owner …
Run Code Online (Sandbox Code Playgroud)