Имеется проблема. Оформляю админ панель, страница делится на две части.
В левой - селект с юзернеймами
<select class="custom-select">
{% for element in userlist %}
<option value='{{ url_for("admin", user=element) }}' {% if user==element %}selected{% endif %} onclick='location=value'>{{ element }}</option>
{% endfor %}
</select>
В правой части селект с записями юзера
<select class="custom-select">
{% for item in content_list %}
<option value='{{ url_for("admin", user=user, ID=item["id"]) }}' {% if item.get('id')==curelem %}selected{% endif %} onclick='location=value'>{{ item["name"] }}</option>
{% endfor %}
</select>
На вход подается
userlist - список вида ['Grigorij', 'Anatoliy', 'Ktougodno']
content_list - список со словарями [{'id':id, 'name':name, 'etc':etc}, {'id':id, 'name':name, 'etc':etc}]
curelem - id текущего выбранного элемента, который получаю с запросом из аргумента ID, а затем передаю его в рендер шаблона так render_template('admin.html', userlist=userlist, content_list=content_list, curelem=request.args.get('ID'))
Так вот, второй селект, который с контентом, выбирает selected'ом все время первый элемент при том, что опытным путем было выяснено, что item["id"] у каждой опции верный, curelem все время имеет верное значение, при нажатии на опцию происходит переход туда, куда надо, то есть внешне вроде бы все работает как и должно, но селект ведет себя как то необычно.
Тест части вашего шаблона с Jinja2:
from jinja2 import Template
template_html = '''
<select class="custom-select">
{% for item in content_list %}
<option value='{{ url_for("admin", user=user, ID=item["id"]) }}' {% if item.get('id')==curelem %}selected{% endif %} onclick='location=value'>{{ item["name"] }}</option>
{% endfor %}
</select>
'''
template = Template(template_html)
params = {
'content_list': [
{'id': 368469, 'name': 'kliff', 'etc': 'welcome to ruSO!'},
{'id': 198251, 'name': 'aiv', 'etc': '..respondent..'},
],
'url_for': lambda x, user, ID: 'https://ru.stackoverflow.com/users/{}'.format(ID),
'curelem': 198251,
}
print(template.render(**params))
Даёт правильный результат с опцией selected
в нужном месте:
<select class="custom-select">
<option value='https://ru.stackoverflow.com/users/368469' onclick='location=value'>kliff</option>
<option value='https://ru.stackoverflow.com/users/198251' selected onclick='location=value'>aiv</option>
</select>
Советы:
curelem
число в виде строки, а в словаре в виде int или наоборот – при беглом просмотре легко упустить эту важную деталь.curelem
в параметры шаблона? К счастью или сожалению, это не считается ошибкой, отсутствующий параметр будет подставляться как None
.И ещё, использовать имена вида curelem
и element
в одном пространстве имён для разных типов данных очень нехорошо. Лучше длинные, но внятные имена вроде current_user_id
, selected_menu_id
и т.п.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть текст по типу: <p>Explore a vast, beautiful, and immersive world<br /> Explore a vast, beautiful, immersive, and dangerous world filled with gripping enemy encounters, challenging puzzles and thrilling escape sequencesUnravel...
Уважаемые пользователи stackoverflow, здравствуйтеНужен ваш совет
Как сделать чтобы при наведению на картинку svg, тултип который срабатывает при наведение на кнопку срабатывал тоже?
Подскажите, пожалуйста, почему перестал работать плагин jQuery Form Styler на страницеВчера еще работа, сегодня - нет