
Језик 🇷🇸 Српски
Dokumentacija
Početak
Upotreba
API referenca
Dodajte komentare u vašu Django aplikaciju
Ово је званични Django пакет за FastComments.
Коментари уживо и компоненте за ћаскање са безбедним SSO преко шаблонских ознака.
Репозиторијум
AI agenti za kodiranje 
Дајте вашем кодујућем агенту FastComments контекст који му је потребан - виџете, конфигурацију, Secure SSO, REST API и SDK‑ове:
npx skills add fastcomments/skills
Ради са Claude Code, Codex, Cursor, Copilot, Gemini и свим осталим агентима које подржава skills CLI.
Zahtevi 
- Python 3.10+
- Django 4.2, 5.0, 5.1, or 5.2
- FastComments tenant ID (koristite
demoda ga isprobate без налога) - API secret је потребан само за Secure SSO
Instalacija 
Инсталирајте из ознаке издања (ов пројекат се дистрибуира преко git ознака, а не преко PyPI):
pip install "git+https://github.com/fastcomments/fastcomments-django.git@v0.1.0"
За серверски REST приступ (помоћне функције admin() / public_api()), додајте api екстра, који увлачи генерисани клијент SDK-а:
pip install "fastcomments-django[api] @ git+https://github.com/fastcomments/fastcomments-django.git@v0.1.0"
Додајте апликацију у INSTALLED_APPS:
INSTALLED_APPS = [
# ...
"fastcomments_django",
]
Brzi početak 
Подесите вашег тенанта у settings.py:
import os
FASTCOMMENTS = {
"TENANT_ID": os.environ.get("FASTCOMMENTS_TENANT_ID", "demo"),
}
Убаците виџет у било који шаблон:
{% load fastcomments %}
{% fastcomments url_id="my-page" %}
Preduslovi za automatski SSO 
Да бисте аутоматски прослали пријављеног корисника у виџет, ознаке читају тренутног корисника из захтева. Уверите се да ваш пројекат има оба ова (они су подразумевано укључени у стандардном Django пројекту):
django.template.context_processors.requestуTEMPLATES["OPTIONS"]["context_processors"]django.contrib.auth.middleware.AuthenticationMiddlewareуMIDDLEWARE
Без захтева у контексту шаблона, виџети се приказују за анонимног посетилаца. Увек можете експлицитно проследити корисника: {% fastcomments user=some_user %}.
Oznake vidžeta 
Сваки виџет има своју ознаку. Сви они прихватају **extra кључне аргументе,
који се спајају у конфигурацију виџета без измена (користите camelCase кључеве) за све
што није обухваћено именованим аргументима испод.
| Tag | Widget |
|---|---|
{% fastcomments %} | Коментари |
{% fastcomments_live_chat %} | Уживо ћаскање |
{% fastcomments_comment_count %} | Ознака броја коментара |
{% fastcomments_comment_count_bulk %} + {% fastcomments_count_marker %} | Масовни број коментара |
{% fastcomments_collab_chat target="#el" %} | Колаборативно (уграђено) ћаскање |
{% fastcomments_image_chat target="#el" %} | ћаскање за анотацију слика |
{% fastcomments_recent_comments %} | Скорашњи коментари |
{% fastcomments_recent_discussions %} | Скорашње дискусије |
{% fastcomments_reviews_summary %} | Сажетак рецензија |
{% fastcomments_top_pages %} | Најдискусијније странице |
{% fastcomments_user_activity user_id="..." %} | Фид активности корисника |
Именовани аргументи мапирају се на camelCase кључеве конфигурације виџета:
| Argument | Config key | Tags |
|---|---|---|
url_id | urlId | коментари, уживо ћаскање, број коментара, колаб/слика ћаскање, скорашњи коментари, сажетак рецензија |
url | url | коментари, уживо ћаскање, колаб/слика ћаскање |
readonly | readonly | коментари, уживо ћаскање, колаб/слика ћаскање |
locale | locale | коментари, уживо ћаскање, колаб/слика ћаскање, активност корисника |
has_dark_background | hasDarkBackground | сви |
default_sort_direction | defaultSortDirection | коментари, уживо ћаскање, колаб/слика ћаскање |
number_only | numberOnly | број коментара |
is_live | isLive | број коментара |
count | count | скорашњи коментари, скорашње дискусије |
target | (querySelector, not sent) | колаб ћаскање, слика ћаскање |
chat_square_percentage | chatSquarePercentage | слика ћаскање |
user_id | userId | активност корисника |
Examples:
{% load fastcomments %}
{% fastcomments url_id="my-page" locale="en_us" default_sort_direction="MR" %}
{% fastcomments_live_chat url_id="room-1" %}
Коментари: {% fastcomments_comment_count url_id="my-page" number_only=True %}
{# Колаб ћаскање се прикаче на постојећи елемент на страници #}
<article id="post-body">...</article>
{% fastcomments_collab_chat target="#post-body" %}
{# Масовни бројеви: поставите маркере, затим један масовни учитавач их све попуњава #}
{% for post in posts %}
<a href="\{{ post.url }}">\{{ post.title }}</a>
{% fastcomments_count_marker url_id=post.url_id %}
{% endfor %}
{% fastcomments_comment_count_bulk %}
SSO (Jedinstvena prijava) 
Омогућите SSO и изаберите режим у settings.py. Secure SSO потписује корисника
серверски помоћу HMAC-SHA256 са вашим API секретом и препоручен је.
FASTCOMMENTS = {
"TENANT_ID": os.environ["FASTCOMMENTS_TENANT_ID"],
"API_KEY": os.environ["FASTCOMMENTS_API_KEY"], # ваш API секрет; потписује Secure SSO
"SSO": {
"ENABLED": True,
"MODE": "secure", # "secure" | "simple"
# Мапирајте FastComments поља на ваш модел корисника. Вредности могу бити
# име атрибута, пут са тачкама ("profile.avatar_url"), callable(user) или None.
"USER_MAP": {
"id": "id",
"email": "email",
"username": "username",
"avatar": None,
"display_name": None,
"website_url": None,
},
"IS_ADMIN": lambda user: user.is_staff, # callable(user) -> bool, или пут са тачкама
"IS_MODERATOR": None,
"GROUP_IDS": None, # callable(user) -> list, или пут са тачкама
},
}
Свесно изаберите SSO
id. FastCommentsidје трајни идентификатор историје коментара корисника. ПодразумеваниUSER_MAPмапира га на ваш Django примарни кључ ради погодности без конфигурације, али секвенцијални целобројни PK-јеви су енумерабилни и тешко се мењају касније (променаidкорисника дели његову историју на нови налог). За било шта изван демоа, мапирајтеidна стабилну, непрозрачну вредност изабрану унапред (UUID или посебан јавни id) и никада не стављајте приватне податке у њега. Пример апликације користи id заснован на корисничком имену управо из тог разлога.
SSO се аутоматски убацива у {% fastcomments %}, {% fastcomments_live_chat %},
{% fastcomments_collab_chat %}, {% fastcomments_image_chat %} и
{% fastcomments_user_activity %} за текућег корисника.
URL-ови за пријаву/одјаву приказани одјављеним посетиоцима подразумевано су
reverse("login") / reverse("logout"); преписујте их са
SSO["LOGIN_URL"] / SSO["LOGOUT_URL"].
Прилагођено мапирање
Две опције вишег приоритета имају предност над USER_MAP:
-
Метод на вашем моделу корисника (питонски аналог интерфејса):
class User(AbstractUser): def to_fastcomments_user_data(self): return {"id": self.pk, "email": self.email, "username": self.get_username()} -
Глобални мапер, пут са тачкама до
callable(user) -> dict:FASTCOMMENTS = {"SSO": {"USER_MAPPER": "myapp.sso.map_user"}}
Редослед приоритета је USER_MAPPER > to_fastcomments_user_data() > USER_MAP.
Pristup API-ju na serveru 
Sa instaliranim dodatkom [api], позовите FastComments REST API преко SDK‑а, који је унапред конфигурисан са вашим API кључем и регионом:
from fastcomments_django import admin, public_api, get_manager
admin().get_comments("YOUR_TENANT_ID", ...) # аутентификовано (DefaultApi)
public_api().get_comments_public(...) # јавно (PublicApi)
# Генерисати SSO токен за API позиве или предају клијенту:
token = get_manager().sso().token_for(request.user)
EU region 
Подесите REGION да усмерите виџете и API у ЕУ:
FASTCOMMENTS = {"TENANT_ID": "...", "REGION": "eu"}
Prilagođavanje embed koda 
Замените fastcomments/widget.html тако што ћете ставити сопствену копију раније у
путању за претрагу шаблона (у пројекту templates/fastcomments/widget.html). Ово је
Django аналог Laravel-овог vendor:publish --tag=fastcomments-views.
Referenca podešavanja 
| Кључ | Подразумевано | Опис |
|---|---|---|
TENANT_ID | "" | Ваш FastComments tenant ID (demo за тестирање). |
API_KEY | "" | Ваш API тајн. Потписује Secure SSO и аутентификује admin(). |
REGION | None | None за САД, "eu" за EU регион. |
SSO.ENABLED | False | Укључите SSO. |
SSO.MODE | "secure" | "secure" (HMAC) или "simple" (непотписано). |
SSO.LOGIN_URL / SSO.LOGOUT_URL | None | Приказује се одјављеним посетиоцима; подразумевано је reverse("login"/"logout"). |
SSO.USER_MAP | id/email/username | FastComments поље у атрибут/пут/функцију корисника. |
SSO.IS_ADMIN / IS_MODERATOR / GROUP_IDS | None | callable(user) или путања са тачкама. |
SSO.USER_MAPPER | None | Путања са тачкама до callable(user) -> dict; највиши приоритет. |
WIDGET_DEFAULTS | {} | Конфигурација спојена у сваки виџет (camelCase кључеви). |
Primer projekta 
Покретљив приказ се налази у example/: апликација са левом траком и главном позорницом
са страницом за сваки виџет и страном за пријаву која наводи унапред припремљене демо кориснике.
Пријавите се као било који од њих и виџети за коментаре и живи ћаскању аутентификују тај
идентитет преко Secure SSO. Из тог директоријума:
python manage.py migrate
# Use your own tenant to see Secure SSO in action (an API secret enables it):
FASTCOMMENTS_TENANT_ID=... FASTCOMMENTS_API_KEY=... python manage.py runserver
Без API секрета враћа се на јавни demo tenant (анонимно).
example/browser_smoke.py је Playwright e2e
који учитава страницу у правом прегледачу и објављује коментар као Secure-SSO
корисник.
Потребна помоћ?
Ако наилазите на било какве проблеме или имате питања у вези са Django пакетом, молимо вас:
Допринесите
Доприноси су добродошли! Молимо посетите GitHub репозиторијум за смернице о доприносу.