Я должен был бы сильно повторить ответ из Фрэнк Крюгер .
Пока вы говорите, что вам нужно регулярное выражение для соответствия IPv6-адресу, я предполагаю, что вы действительно нужно иметь возможность проверить, является ли данная строка действительным адресом IPv6. Здесь есть тонкое, но важное различие.
Существует несколько способов проверить, является ли данная строка действительным адресом IPv6, а совпадение регулярных выражений - только одно решение.
Использовать если вы можете.
Регулярное выражение, предложенное Factor Mystic , длинное и сложное. Это, скорее всего, работает, но вы также должны подумать о том, как вы справитесь, если он неожиданно потерпит неудачу. Пункт, который я пытаюсь сделать здесь, состоит в том, что если вы не можете создать требуемое регулярное выражение самостоятельно, вы не сможете легко его отладить.
Если у вас нет подходящей библиотеки, это может быть лучше написать собственную процедуру проверки IPv6, которая не зависит от регулярных выражений. Если вы его пишете, вы это понимаете, и если вы это понимаете, вы можете добавить комментарии, чтобы объяснить это, чтобы другие могли также понять и впоследствии сохранить его.
Действуйте осторожно при использовании регулярного выражения, функциональность которого вы можете " t объяснить кому-то еще.
Хорошо можно включить:
'django.core.context_processors.request',
в Вашем settings.TEMPLATE_CONTEXT_PROCESSORS
блок и рычаг ссылающийся домен, но это немного противно и могло повредиться повсеместно.
Большинство мест, где Вы хотели бы это (например, страница сообщения редактирования на ТАК) у Вас есть реальный объект зацепиться к (в том примере, сообщении), таким образом, можно легко разработать, какова надлежащая предыдущая страница должна быть.
На самом деле это go(-1)
.
<input type=button value="Previous Page" onClick="javascript:history.go(-1);">
Можно всегда использовать клиентскую опцию, которая очень проста:
<a href="javascript:history.go(1)">Back</a>