Чтобы записать std :: string в двоичный файл, сначала необходимо сохранить длину строки:
std::string str("whatever");
size_t size=str.size();
outfile.write(&size,sizeof(size);
outfile.write(&str[0],size);
Чтобы прочитать это, отмените процесс, изменив размер строки сначала, чтобы вы имеют достаточно места:
std::string str;
size_t size;
infile.read(&size, sizeof(size));
str.resize(size);
infile.read(&str[0], size);
Поскольку строки имеют переменный размер, если вы не поместили этот размер в файл, вы не сможете получить его правильно. Вы можете положиться на маркер '\ 0', который, как гарантируется, будет в конце строки c или эквивалентной строки :: c_str (), но это не очень хорошая идея, потому что 1. вы должны прочитать в string character по символу, проверяющему значение null 2. Строка std :: string может содержать нулевой байт (хотя это действительно не так, потому что вызовы c_str () тогда путают).
Необходимо указать аргумент в сигнатуре метода, то есть изменить
def profile(request):
на:
def profile(request, username):