
Jezik 🇭🇷 Hrvatski
Dokumentacija
Početak
Upotreba
Referenca API-ja
Dodajte komentare u svoju Django aplikaciju
Ovo je službeni Django paket za FastComments.
Komponente za komentiranje uživo i chat s sigurnim SSO‑om putem oznaka predložaka.
Repozitorij
AI agenti za kodiranje 
Dajte svom programskom agentu FastComments kontekst koji mu je potreban – widgete, konfiguraciju, Secure SSO, REST API i SDK‑ove:
npx skills add fastcomments/skills
Radi s Claude Code, Codex, Cursor, Copilot, Gemini i svim ostalim agentima koje podržava skills CLI.
Zahtjevi 
- Python 3.10+
- Django 4.2, 5.0, 5.1, ili 5.2
- FastComments tenant ID (koristite
demoda ga isprobate bez računa) - API tajna je potrebna samo za Secure SSO
Instalacija 
Instaliraj iz oznake izdanja (ovaj projekt distribuira se putem git oznaka, a ne putem PyPI):
pip install "git+https://github.com/fastcomments/fastcomments-django.git@v0.1.0"
Za pristup REST s poslužitelja (pomoćni programi admin() / public_api()), dodaj api dodatak, koji učitava generirani klijent SDK-a:
pip install "fastcomments-django[api] @ git+https://github.com/fastcomments/fastcomments-django.git@v0.1.0"
Dodaj aplikaciju u INSTALLED_APPS:
INSTALLED_APPS = [
# ...
"fastcomments_django",
]
Brzi početak 
Konfigurirajte svoj tenant u settings.py:
import os
FASTCOMMENTS = {
"TENANT_ID": os.environ.get("FASTCOMMENTS_TENANT_ID", "demo"),
}
Umetnite widget u bilo koji predložak:
{% load fastcomments %}
{% fastcomments url_id="my-page" %}
Preduvjeti za automatski SSO 
Kako bi se automatski proslijedio prijavljeni korisnik widgetu, oznake čitaju trenutnog korisnika iz zahtjeva. Provjerite da vaš projekt ima oboje (standardni Django projekt ih ima po zadanom):
django.template.context_processors.requestinTEMPLATES["OPTIONS"]["context_processors"]django.contrib.auth.middleware.AuthenticationMiddlewareinMIDDLEWARE
Bez zahtjeva u kontekstu predloška, widgeti se renderaju za anonimnog posjetitelja. Uvijek možete izričito proslijediti korisnika: {% fastcomments user=some_user %}.
Oznake widgeta 
Svaki widget ima svoju oznaku. Sve one prihvaćaju **extra ključne argumente,
koji se spajaju u konfiguraciju widgeta onakvima kakvi jesu (koristite camelCase ključeve) za sve
što nije pokriveno imenovanim argumentima u nastavku.
| Oznaka | Widget |
|---|---|
{% fastcomments %} | Komentari |
{% fastcomments_live_chat %} | Live chat |
{% fastcomments_comment_count %} | Bedž broja komentara |
{% fastcomments_comment_count_bulk %} + {% fastcomments_count_marker %} | Brojači komentara u grupi |
{% fastcomments_collab_chat target="#el" %} | Suradnički (inline) chat |
{% fastcomments_image_chat target="#el" %} | Chat s bilješkama na slikama |
{% fastcomments_recent_comments %} | Nedavni komentari |
{% fastcomments_recent_discussions %} | Nedavne rasprave |
{% fastcomments_reviews_summary %} | Sažetak recenzija |
{% fastcomments_top_pages %} | Najraspravljanije stranice |
{% fastcomments_user_activity user_id="..." %} | Feed aktivnosti korisnika |
Imenovani argumenti mapiraju se na camelCase ključeve konfiguracije widgeta:
| Argument | Ključ konfiguracije | Oznake |
|---|---|---|
url_id | urlId | komentari, live chat, brojač komentara, collab/image chat, nedavni komentari, sažetak recenzija |
url | url | komentari, live chat, collab/image chat |
readonly | readonly | komentari, live chat, collab/image chat |
locale | locale | komentari, live chat, collab/image chat, aktivnost korisnika |
has_dark_background | hasDarkBackground | sve |
default_sort_direction | defaultSortDirection | komentari, live chat, collab/image chat |
number_only | numberOnly | brojač komentara |
is_live | isLive | brojač komentara |
count | count | nedavni komentari, nedavne rasprave |
target | (querySelector, ne šalje se) | collab chat, image chat |
chat_square_percentage | chatSquarePercentage | image chat |
user_id | userId | aktivnost korisnika |
Primjeri:
{% load fastcomments %}
{% fastcomments url_id="my-page" locale="en_us" default_sort_direction="MR" %}
{% fastcomments_live_chat url_id="room-1" %}
Comments: {% fastcomments_comment_count url_id="my-page" number_only=True %}
{# Collab chat attaches to an existing element on the page #}
<article id="post-body">...</article>
{% fastcomments_collab_chat target="#post-body" %}
{# Bulk counts: place markers, then one bulk loader fills them all in #}
{% 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) 
Omogućite SSO i odaberite način rada u settings.py. Secure SSO potpisuje korisnika
na strani poslužitelja pomoću HMAC-SHA256 s vašim API tajnim ključem i preporučuje se.
FASTCOMMENTS = {
"TENANT_ID": os.environ["FASTCOMMENTS_TENANT_ID"],
"API_KEY": os.environ["FASTCOMMENTS_API_KEY"], # your API secret; signs Secure SSO
"SSO": {
"ENABLED": True,
"MODE": "secure", # "secure" | "simple"
# Map FastComments fields to your user model. Values may be an attribute
# name, a dotted path ("profile.avatar_url"), a callable(user), or 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, or dotted path
"IS_MODERATOR": None,
"GROUP_IDS": None, # callable(user) -> list, or dotted path
},
}
Svjesno odaberite SSO
id. FastCommentsidje trajni identifikator povijesti komentara korisnika. ZadaniUSER_MAPpreslikava ga na vaš Django primarni ključ radi praktičnosti bez konfiguracije, ali sekvencijalni cjelobrojni PK-ovi su pogodni za pogađanje i teško ih je kasnije promijeniti (promjenaidkorisnika razdvaja njegovu povijest u novi račun). Za bilo što iznad demonstracije, preslikajteidna stabilnu, neprozirnu vrijednost odabranu unaprijed (UUID ili namjenski javni id) i nikada ne stavljajte privatne podatke u njega. Primjer aplikacije iz tog razloga koristi id temeljen na korisničkom imenu.
SSO se automatski ubacuje u {% fastcomments %}, {% fastcomments_live_chat %},
{% fastcomments_collab_chat %}, {% fastcomments_image_chat %} i
{% fastcomments_user_activity %} za trenutnog korisnika.
URL-ovi za prijavu/odjavu prikazani posjetiteljima koji nisu prijavljeni
zadano su reverse("login") / reverse("logout"); nadjačajte ih s
SSO["LOGIN_URL"] / SSO["LOGOUT_URL"].
Prilagođeno preslikavanje
Dvije opcije višeg prioriteta nadjačavaju USER_MAP:
-
Metoda na vašem korisničkom modelu (Pythonov analog sučelja):
class User(AbstractUser): def to_fastcomments_user_data(self): return {"id": self.pk, "email": self.email, "username": self.get_username()} -
Globalni mapper, točkasta putanja do
callable(user) -> dict:FASTCOMMENTS = {"SSO": {"USER_MAPPER": "myapp.sso.map_user"}}
Prioritet je USER_MAPPER > to_fastcomments_user_data() > USER_MAP.
Pristup API-ju na strani poslužitelja 
S instaliranim dodatkom [api], pozovite FastComments REST API putem SDK-a,
pre‑konfiguriranog s vašim API ključem i regijom:
from fastcomments_django import admin, public_api, get_manager
admin().get_comments("YOUR_TENANT_ID", ...) # autentificirano (DefaultApi)
public_api().get_comments_public(...) # javno (PublicApi)
# Generirajte SSO token za API pozive ili predaju klijentu:
token = get_manager().sso().token_for(request.user)
EU regija 
Postavite REGION da usmjerite widgete i API na EU:
FASTCOMMENTS = {"TENANT_ID": "...", "REGION": "eu"}
Prilagodba ugrađenog markup-a 
Zamijenite fastcomments/widget.html stavljanjem vlastite kopije ranije u
put pretraživanja predložaka (projekt templates/fastcomments/widget.html). Ovo je
Django analog Laravelovog vendor:publish --tag=fastcomments-views.
Referenca postavki 
| Key | Default | Description |
|---|---|---|
TENANT_ID | "" | Vaš FastComments tenant ID (demo za testiranje). |
API_KEY | "" | Vaš API tajni ključ. Potpisuje Secure SSO i autentificira admin(). |
REGION | None | None za US, "eu" za EU regiju. |
SSO.ENABLED | False | Uključite SSO. |
SSO.MODE | "secure" | "secure" (HMAC) ili "simple" (nepotpisano). |
SSO.LOGIN_URL / SSO.LOGOUT_URL | None | Prikazano odjavljenim posjetiteljima; zadano na reverse("login"/"logout"). |
SSO.USER_MAP | id/email/username | FastComments polje na atribut/put/poziv korisnika. |
SSO.IS_ADMIN / IS_MODERATOR / GROUP_IDS | None | callable(user) ili točka‑odvojeni put. |
SSO.USER_MAPPER | None | Točka‑odvojeni put do callable(user) -> dict; najviši prioritet. |
WIDGET_DEFAULTS | {} | Konfiguracija spojena u svaki widget (ključevi u camelCase). |
Primjer projekta 
Pokretljivi showcase nalazi se u example/: aplikacija s lijevom trakom + glavnom pozornicom s po jednom stranicom po widgetu i stranicom za prijavu koja prikazuje unaprijed postavljene demo korisnike.
Prijavite se kao bilo koji od njih i widgeti za komentare i live‑chat autentificiraju taj identitet putem Secure SSO. Iz tog direktorija:
python manage.py migrate
# Koristite vlastiti najmodavac da vidite Secure SSO u akciji (API tajna to omogućuje):
FASTCOMMENTS_TENANT_ID=... FASTCOMMENTS_API_KEY=... python manage.py runserver
Bez API tajne vraća se na javnog demo najmodavca (anonimno).
example/browser_smoke.py je Playwright e2e koji učitava stranicu u stvarnom pregledniku i objavljuje komentar kao Secure-SSO korisnik.
Potrebna pomoć?
Ako naiđete na bilo kakve probleme ili imate pitanja o Django paketu, molimo:
Doprinos
Doprinosi su dobrodošli! Molimo posjetite GitHub repozitorij za smjernice o doprinosu.