Преобразовать байтовый массив в шестнадцатеричную строку.
public static String toSHA1(byte[] convertme) {
final char[] HEX_CHARS = "0123456789ABCDEF".toCharArray();
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-1");
}
catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}
byte[] buf = md.digest(convertme);
char[] chars = new char[2 * buf.length];
for (int i = 0; i < buf.length; ++i) {
chars[2 * i] = HEX_CHARS[(buf[i] & 0xF0) >>> 4];
chars[2 * i + 1] = HEX_CHARS[buf[i] & 0x0F];
}
return new String(chars);
}
Если ваш шаблон находится users/templates/base.html
, то вы должны использовать {% extends 'base.html' %}
. Однако загрузчик шаблонов приложений Django останавливается, как только находит совпадение, поэтому будет использовать users/templates/base.html
, если users
выше articles
в настройке INSTALLED_APPS
.
По этой причине Django рекомендует создавать подкаталоги в каталоге шаблонов приложения. Затем сохраните ваши шаблоны как users/templates/users/base.html
и articles/templates/articles/base.html
. Теперь вы можете использовать {% extends 'articles/base.html' %}
и {% extends 'users/base.html' %}
, и имена ваших шаблонов не будут конфликтовать друг с другом.