- Redis / Celery / Celery Beat - кэширование популярных тегов и лучших участников - асинхронные уведомления в Centrifugo - отправка email-уведомлений через Celery - полнотекстовый поиск и подсказки - Docker Compose инфраструктура
79 lines
2.6 KiB
HTML
79 lines
2.6 KiB
HTML
{% load static %}
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>VkDesk | Fresh Questions</title>
|
|
<meta name="description" content="VkDesk Q&A">
|
|
<link rel="stylesheet" href="{% static 'core/css/style.css' %}">
|
|
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
|
<script src="https://unpkg.com/centrifuge@2.2.1/centrifuge.min.js"></script>
|
|
</head>
|
|
<body>
|
|
<header class="site-header">
|
|
<a href="/" class="logo not-underlined">VkDesk</a>
|
|
<form class="search">
|
|
<input id="search-input" type="text" placeholder="Search">
|
|
<div id="search-suggestions" class="search-suggestions"></div>
|
|
<a class="button button--ask" href="ask">ASK IT</a>
|
|
</form>
|
|
<div class="user-block">
|
|
<div class="avatar-box small">
|
|
{% if request.user.profile.avatar %}
|
|
<img src="{{ request.user.profile.avatar.url }}" width="40">
|
|
{% else %}
|
|
<img src="{% static 'core/img/profile.webp' %}" width="40">
|
|
{% endif %}
|
|
</div>
|
|
<div class="user-links">
|
|
{% if request.user.is_authenticated %}
|
|
<a href="{% url 'profile' %}" class="user-name">
|
|
{{ request.user.profile.nickname }}
|
|
</a>
|
|
<div>
|
|
<a href="{% url 'logout' %}">log out</a>
|
|
</div>
|
|
{% else %}
|
|
<div>
|
|
<a href="{% url 'login' %}">log in</a>
|
|
<a href="{% url 'signup' %}">sign up</a>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</header>
|
|
<div class="content">
|
|
<main>
|
|
{% block content %}
|
|
{% endblock %}
|
|
</main>
|
|
<aside class="sidebar">
|
|
<div class="sidebar-section">
|
|
<h2>Trending Tags</h2>
|
|
<div class="tag-cloud">
|
|
{% for tag in popular_tags %}
|
|
<a href="/?tag={{ tag.name }}" class="not-underlined">{{ tag.name }}</a>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
<div class="sidebar-section">
|
|
<h2>Best Members</h2>
|
|
<ul class="best-members">
|
|
{% for member in best_members %}
|
|
<li>{{ member.username }} ({{ member.score }})</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
</aside>
|
|
</div>
|
|
<footer class="footer">2026</footer>
|
|
</body>
|
|
<script src="{% static 'core/js/script.js' %}"></script>
|
|
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|