Проверка краткого заголовка в Django

Следующий пример взят из весеннего учебного пособия:

@RequestMapping(method = RequestMethod.POST)
ResponseEntity<?> add(@PathVariable String userId, @RequestBody Bookmark input) {
    this.validateUser(userId);

    return this.accountRepository
            .findByUsername(userId)
            .map(account -> {
                Bookmark result = bookmarkRepository.save(new Bookmark(account,
                        input.uri, input.description));

                URI location = ServletUriComponentsBuilder
                    .fromCurrentRequest().path("/{id}")
                    .buildAndExpand(result.getId()).toUri();

                return ResponseEntity.created(location).build();
            })
            .orElse(ResponseEntity.noContent().build());

}

Обратите внимание, что следующее вычислит путь контекста (URI), чтобы вы избежали дублирования кода и сделали ваше приложение более переносимым:

ServletUriComponentsBuilder
                    .fromCurrentRequest().path("/{id}")
7
задан user116170 2 June 2009 в 18:54
поделиться

1 ответ

Этому вопросу уже полвека, поэтому, обновляя свой вопрос, я должен пояснить, что я, по крайней мере, киваю в прошлое, где некоторые функции могли не существовать.

Самый простой способ узнать обрабатывать ярлыки в формах в наши дни - это просто использовать django.models.SlugField . Он проверит себя для вас и будет означать, что это поле является индексом.

Если вы не используете это в модели, вы все равно можете подключить тот же валидатор, который использует SlugField:

from django.core.validators import validate_slug

slug = forms.CharField(..., validators=[validate_slug])

Если вы просто хотите сделать закулисной проверки или написания собственного валидатора, вы можете использовать аналогичную технику, чтобы получить определение действительного слага, данное Django. Это просто скомпилированное регулярное выражение, которое validate_slug выше использует:

from django.core.validators import slug_re

if slug_re.match(...):
    ...

Я не могу представить, что оно изменится, но, заблокировав себя идеей Django о слаге, вы '

14
ответ дан 6 December 2019 в 06:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: