Мы делаем нечто подобное с заголовками запросов здесь . У нас есть абстрактный фильтр , который правильно настраивает URI, вам просто нужно определить URI из ServerWebExchange
.
public class CookieToRequestUriGatewayFilterFactory extends
AbstractChangeRequestUriGatewayFilterFactory {
private final Logger log = LoggerFactory
.getLogger(RequestHeaderToRequestUriGatewayFilterFactory.class);
public RequestHeaderToRequestUriGatewayFilterFactory() {
super(NameConfig.class);
}
@Override
public List shortcutFieldOrder() {
return Arrays.asList(NAME_KEY);
}
@Override
protected Optional determineRequestUri(ServerWebExchange exchange,
NameConfig config) {
String cookieValue = exchange.getRequest().getCookies().getFirst(config.getName());
String requestUrl = determineUrlFromCookie(cookieValue);
return Optional.ofNullable(requestUrl).map(url -> {
try {
return new URL(url).toURI();
}
catch (MalformedURLException | URISyntaxException e) {
log.info("Request url is invalid : url={}, error={}", requestUrl,
e.getMessage());
return null;
}
});
}
}
Это будет зависеть от вас, чтобы реализовать determineUrlFromCookie()
.
Используя direct_to_template
универсальное представление было бы намного более простым. Вы могли использовать переданный в параметрах на одном представлении для определения фактического шаблона в urls.py, если Вы не хотите добавлять запись для каждой страницы:
r'^foo/(?P<template_name>.+)/$','direct_to_template', {'template': 'foo_index.html'}),
Затем импортируйте шаблон в Вашем foo_index.html
:
{% include template_name %}