Для HTML 4 ответ технически:
Идентификаторы ID и NAME должны начинаться с буквы ([A-Za-z]) и могут быть за которым следует любое количество букв, цифр ([0-9]), дефис («-»), подчеркивание («_»), двоеточия («:») и периоды («.»).
HTML 5 еще более разрешительный, говоря только, что идентификатор должен содержать хотя бы один символ и может не содержать пробельных символов.
Атрибут id чувствительный к регистру в XHTML .
Как чисто практический вопрос, вы можете избежать определенных символов. Периоды, двоеточия и «#» имеют особое значение в селекторах CSS, поэтому вам придется избегать этих символов, используя обратную косу в CSS или двойную обратную косую черту в селекторе , переданном jQuery . Подумайте, как часто вам придется избегать символа в ваших таблицах стилей или кода, прежде чем вы сходите с ума по периодам и двоеточиям в ids.
Например, допустимо объявление HTML
. Вы можете выбрать этот элемент в CSS как
#first\.name
и в jQuery, например:$('#first\\.name').
. Но если вы забудете обратную косую черту,$('#first.name')
, у вас будет совершенно правильный селектор, который ищет элемент с idfirst
, а также имеющий классname
. Это ошибка, которую легко упустить. В долгосрочной перспективе вы можете быть более счастливы, выбрав вместо этого idfirst-name
(дефис, а не период).Вы можете упростить свои задачи разработки, строго придерживаясь соглашения об именах. Например, если вы полностью ограничиваете символы нижнего регистра и всегда разделяете слова с помощью дефисов или подчеркиваний (но не на обоих, выберите один и никогда не используйте другой), тогда у вас есть простой для запоминания шаблон. Вы никогда не будете удивляться: «Было ли это
firstName
илиFirstName
?» потому что вы всегда будете знать, что вы должны ввестиfirst_name
. Предпочитаете верблюд? Тогда ограничьте себя этим, не дефисами или подчеркиваниями, и всегда, последовательно используйте либо верхний регистр, либо нижний регистр для первого символа, не смешивайте их.Теперь очень неясная проблема заключалось в том, что хотя бы один браузер Netscape 6, неправильно обрабатывал значения атрибута id как чувствительные к регистру . Это означало, что если бы вы набрали
id="firstName"
в своем HTML (нижний регистр «f») и#FirstName { color: red }
в вашем CSS (верхний регистр «F»), этот багги-браузер не смог бы установить цвет элемента в красный , Во время этого редактирования, апрель 2015 года, я надеюсь, вас не попросят поддержать Netscape 6. Рассмотрим эту историческую сноску.
Попробуйте изменить его следующим образом:
return obj == request.user
, поскольку object
- это пользователь, к которому вы пытаетесь получить доступ, а request.user
- текущий аутентифицированный пользователь.