Я попробовал вашу функцию, и была небольшая ошибка: если какое-то окончательное значение «r» имеет только 1 цифру, результат возникает, например: «a0a0a», когда правое значение - «0a0a0a», например. Я просто быстро исправил это, добавив это вместо вашего возвращения:
var rStr = (r.toString(16).length < 2)?'0'+r.toString(16):r.toString(16);
var gStr = (g.toString(16).length < 2)?'0'+g.toString(16):g.toString(16);
var bStr = (b.toString(16).length < 2)?'0'+b.toString(16):b.toString(16);
return (usePound?"#":"") + rStr + gStr + bStr;
Возможно, это не так приятно, но это делает работу. Отличная функция, BTW. Только то, что мне было нужно. :)
Вы не должны использовать GET для отправки имени пользователя и пароля, это плохая практика (поскольку она отображает информацию о панели URL и может представлять угрозу безопасности ). Вместо этого используйте POST. Кроме того, я предполагаю, что вы пытаетесь аутентифицировать своих пользователей, и кажется, что вы делаете слишком много работы (создаете новое промежуточное ПО), чтобы иметь дело с чем-то, что полностью встроено, чтобы взять пример из docs :
from django.contrib.auth import authenticate, login
def my_view(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# Redirect to a success page.
else:
# Return a 'disabled account' error message
else:
# Return an 'invalid login' error message.
Мне очень нравится использовать login_required decorator , очень простой в использовании. Надеюсь, что это поможет
Удалить неизменяемость:
if not request.GET._mutable:
request.GET._mutable = True
# now you can spoil it
request.GET['pwd'] = 'iloveyou'
django.http.QueryDict
объекты, которые назначены request.GET
и request.POST
, неизменяемы.
Вы можете преобразовать его в изменяемый экземпляр QueryDict
, скопировав его:
request.GET = request.GET.copy()
После этого вы сможете изменить QueryDict
:
>>> from django.test.client import RequestFactory
>>> request = RequestFactory().get('/')
>>> request.GET
<QueryDict: {}>
>>> request.GET['foo'] = 'bar'
AttributeError: This QueryDict instance is immutable
>>> request.GET = request.GET.copy()
<QueryDict: {}>
>>> request.GET['foo'] = 'bar'
>>> request.GET
<QueryDict: {'foo': 'bar'}>
. Это было целенаправленно спроектировано таким образом, что ни одному из компонентов приложения не разрешено редактировать исходные данные запроса, поэтому даже создание неизменяемого QueryDict
снова нарушит эту конструкцию. Я бы по-прежнему предлагал вам следовать рекомендациям и назначать дополнительные данные запроса непосредственно на объект request
в вашем промежуточном программном обеспечении, несмотря на то, что он может заставить вас редактировать ваши источники.