
Jezik 🇭🇷 Hrvatski
Dokumentacija
Početak
Korištenje
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
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 
Every widget has its own tag. All of them accept **extra keyword arguments,
which are merged into the widget config as-is (use camelCase keys) for anything
not covered by the named arguments below.
| Oznaka | Widget |
|---|---|
{% fastcomments %} | Comments |
{% fastcomments_live_chat %} | Live chat |
{% fastcomments_comment_count %} | Comment count badge |
{% fastcomments_comment_count_bulk %} + {% fastcomments_count_marker %} | Bulk comment counts |
{% fastcomments_collab_chat target="#el" %} | Collaborative (inline) chat |
{% fastcomments_image_chat target="#el" %} | Image annotation chat |
{% fastcomments_recent_comments %} | Recent comments |
{% fastcomments_recent_discussions %} | Recent discussions |
{% fastcomments_reviews_summary %} | Reviews summary |
{% fastcomments_top_pages %} | Most-discussed pages |
{% fastcomments_user_activity user_id="..." %} | A user's activity feed |
Named arguments map to the widget's camelCase config keys:
| Argument | Ključ konfiguracije | Oznake |
|---|---|---|
url_id | urlId | comments, live chat, comment count, collab/image chat, recent comments, reviews summary |
url | url | comments, live chat, collab/image chat |
readonly | readonly | comments, live chat, collab/image chat |
locale | locale | comments, live chat, collab/image chat, user activity |
has_dark_background | hasDarkBackground | all |
default_sort_direction | defaultSortDirection | comments, live chat, collab/image chat |
number_only | numberOnly | comment count |
is_live | isLive | comment count |
count | count | recent comments, recent discussions |
target | (querySelector, not sent) | collab chat, image chat |
chat_square_percentage | chatSquarePercentage | image chat |
user_id | userId | user activity |
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 u settings.py. Secure SSO potpisuje korisnika na serverskoj strani koristeći 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
},
}
Odaberite SSO
idsvjesno. FastCommentsidje stalni
upravljač za povijest komentara korisnika. ZadaniUSER_MAPga mapira na vaš
Django primarni ključ radi nulte konfiguracije, ali sekvencijalni cijeli PK‑ovi su
enumerabilni i teško ih je kasnije promijeniti (promjenaidkorisnika razdvaja
njihovu povijest u novi račun). Za sve izvan demonstracije, mapirajteidna stabilnu,
neprozirnu vrijednost odabranu unaprijed (UUID ili posvećeni javni id), i nikada ne
stavljajte privatne podatke u njega. Primjer aplikacije koristi id temeljen na
korisničkom imenu iz tog razloga.
SSO se automatski umetne u {% fastcomments %}, {% fastcomments_live_chat %}, {% fastcomments_collab_chat %}, {% fastcomments_image_chat %}, i {% fastcomments_user_activity %} za trenutnog korisnika.
URL‑ovi za prijavu/odjavu prikazani neprijavljenim posjetiteljima zadano su reverse("login") / reverse("logout"); prepišite ih s SSO["LOGIN_URL"] / SSO["LOGOUT_URL"].
Custom mapping
Dvije opcije višeg prioriteta imaju prednost nad USER_MAP:
-
Metoda na vašem korisničkom modelu (Python 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čkasti put 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 ugradbenog 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.