Я бы не советовал пытаться войти в систему через URL. URL-адрес не зашифрован (если только вы не используете HTTPS и даже если его еще можно удалить), и его легко перехватить или просто угадать грубой силой.
Существует два возможных решения:
Использование сессий и файлов cookie Django
Воспользуйтесь тем, что в Django логин автоматически сохраняет куки. После того как пользователь вошел в систему, он остается в системе до тех пор, пока не выйдет из системы (или не истечет срок действия файла cookie, но его можно настроить на вечную работу). Затем все, что вам нужно сделать, это создать URL-адрес /myprofile/
и просто отправить туда пользователей. Если пользователь вошел в систему, то здесь вы показываете его профиль.
Кодирование с помощью хэша
Однако, если вы действительно хотите передать URL с именем пользователя и паролем, я бы рекомендовал скрыть их имя пользователя и пароль в виде хэша MD5, который затем можно передать через URL.
import urllib, hexlib
username = 'joeblow'
password = 'password'
url = 'http://www.mysite.com/users/login/'
url += urllib.urlencode({
'username':hashlib.md5(username.lower()).hexdigest(),
'password':hashlib.md5(password.lower()).hexdigest(),
})
# return the url to the user in the email template
return url
Примечание: я все равно настоятельно рекомендую вариант 1!