
Jezik 🇸🇮 Slovenščina
Dokumentacija
Začetek
Uporaba
Referenca API
Dodajte komentarje v svojo Django aplikacijo
To je uradni paket Django za FastComments.
Komponente za komentarje v realnem času in klepet z varnim SSO prek oznak predloge.
Repository
AI kodirni agenti 
Dajte vašemu programskemu agentu kontekst FastComments, ki ga potrebuje – gradnike, konfiguracijo, varno SSO, REST API in SDK-je:
npx skills add fastcomments/skills
Deluje s Claude Code, Codex, Cursor, Copilot, Gemini in vsakim drugim agentom, ki ga podpira skills CLI.
Zahteve 
- Python 3.10+
- Django 4.2, 5.0, 5.1, ali 5.2
- ID najemnika FastComments (uporabite
demo, da ga preizkusite brez računa) - API skrivnost je potrebna le za Secure SSO
Namestitev 
Namestite iz oznake izdaj (ta projekt je distribuiran prek git oznak, ne preko PyPI):
pip install "git+https://github.com/fastcomments/fastcomments-django.git@v0.1.0"
Za strežniški REST dostop (pomožna orodja admin() / public_api()), dodajte
api dodatno komponento, ki naloži generiranega odjemalca SDK:
pip install "fastcomments-django[api] @ git+https://github.com/fastcomments/fastcomments-django.git@v0.1.0"
Dodajte aplikacijo v INSTALLED_APPS:
INSTALLED_APPS = [
# ...
"fastcomments_django",
]
Hiter začetek 
Konfigurirajte svoj najemnik v settings.py:
import os
FASTCOMMENTS = {
"TENANT_ID": os.environ.get("FASTCOMMENTS_TENANT_ID", "demo"),
}
Vstavite widget v katerokoli predlogo:
{% load fastcomments %}
{% fastcomments url_id="my-page" %}
Predpogoji za samodejni SSO 
Za samodejno posredovanje prijavljenega uporabnika widgetu oznake preberejo trenutnega uporabnika iz zahteve. Prepričajte se, da vaš projekt vsebuje oboje (so privzeto vključeni v standardnem projektu Django):
django.template.context_processors.requestvTEMPLATES["OPTIONS"]["context_processors"]django.contrib.auth.middleware.AuthenticationMiddlewarevMIDDLEWARE
Brez zahteve v kontekstu predloge se widgeti prikažejo za anonimnega obiskovalca. Vedno lahko uporabnika izrecno posredujete: {% fastcomments user=some_user %}.
Oznake pripomočkov 
Vsak gradnik ima svojo oznako. Vsi sprejemajo ključne argumente **extra,
ki se združijo v konfiguracijo gradnika brez sprememb (uporabite camelCase ključe) za vse,
kar ni zajeto v spodnjih imenovanih argumentih.
| Oznaka | Gradnik |
|---|---|
{% 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 |
Imenovani argumenti se preslikajo v camelCase ključe konfiguracije gradnika:
| 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 |
Primeri:
{% 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 (Enkratna prijava) 
Omogočite SSO in izberite način v settings.py. Varni SSO podpiše uporabnika
na strani strežnika s HMAC-SHA256 z vašim API skrivnim ključem in je priporočen.
FASTCOMMENTS = {
"TENANT_ID": os.environ["FASTCOMMENTS_TENANT_ID"],
"API_KEY": os.environ["FASTCOMMENTS_API_KEY"], # vaš API skrivni ključ; podpisuje Varni SSO
"SSO": {
"ENABLED": True,
"MODE": "secure", # "secure" | "simple"
# Preslikajte polja FastComments na svoj uporabniški model. Vrednosti so lahko
# ime atributa, pot s pikami ("profile.avatar_url"), callable(user) ali 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, ali pot s pikami
"IS_MODERATOR": None,
"GROUP_IDS": None, # callable(user) -> list, ali pot s pikami
},
}
Premislite o izbiri SSO
id. FastCommentsidje trajna referenca za zgodovino komentarjev uporabnika. PrivzetiUSER_MAPga preslika na vaš Django primarni ključ za udobje brez nastavitev, a zaporedne celoštevilčne PK so preštevljivi in jih je kasneje težko spremeniti (spremembaiduporabnika razdeli njegovo zgodovino v nov račun). Za karkoli več od demo aplikacije preslikajteidna stabilno, neopisljivo vrednost, izbrano vnaprej (UUID ali namenski javni id), in vanjo nikoli ne vključite zasebnih podatkov. Primer aplikacije iz tega razloga uporablja id na osnovi uporabniškega imena.
SSO se samodejno vstavi v {% fastcomments %}, {% fastcomments_live_chat %},
{% fastcomments_collab_chat %}, {% fastcomments_image_chat %} in
{% fastcomments_user_activity %} za trenutnega uporabnika.
URL-ja za prijavo/odjavo, prikazana odjavljenim obiskovalcem, privzeto uporabljata reverse("login") /
reverse("logout"); preglasita ju z SSO["LOGIN_URL"] / SSO["LOGOUT_URL"].
Preslikava po meri
Dve možnosti z višjo prednostjo imata prednost pred USER_MAP:
-
Metoda na vašem uporabniškem modelu (pythonična analogija vmesnika):
class User(AbstractUser): def to_fastcomments_user_data(self): return {"id": self.pk, "email": self.email, "username": self.get_username()} -
Globalni preslikovalnik, pot s pikami do
callable(user) -> dict:FASTCOMMENTS = {"SSO": {"USER_MAPPER": "myapp.sso.map_user"}}
Prednost ima USER_MAPPER > to_fastcomments_user_data() > USER_MAP.
Dostop do API-ja na strežniku 
Z nameščenim dodatkom [api] lahko kličete FastComments REST API prek SDK,
ki je vnaprej nastavljen z vašim API ključem in regijo:
from fastcomments_django import admin, public_api, get_manager
admin().get_comments("YOUR_TENANT_ID", ...) # authenticated (DefaultApi)
public_api().get_comments_public(...) # public (PublicApi)
# Generate an SSO token for API calls or client hand-off:
token = get_manager().sso().token_for(request.user)
EU regija 
Nastavite REGION, da usmerite gradnike in API v EU:
FASTCOMMENTS = {"TENANT_ID": "...", "REGION": "eu"}
Prilagajanje vdelane oznake 
Preglasite fastcomments/widget.html tako, da postavite svojo kopijo prej v poti iskanja predlog (v projektu templates/fastcomments/widget.html). To je Django analog Laravelovega vendor:publish --tag=fastcomments-views.
Referenca nastavitev 
| Key | Default | Description |
|---|---|---|
TENANT_ID | "" | Vaš FastComments identifikator najemnika (demo za testiranje). |
API_KEY | "" | Vaše API skrivnost. Podpisuje Secure SSO in avtenticira admin(). |
REGION | None | None za ZDA, "eu" za EU regijo. |
SSO.ENABLED | False | Omogoči SSO. |
SSO.MODE | "secure" | "secure" (HMAC) ali "simple" (nepodpisano). |
SSO.LOGIN_URL / SSO.LOGOUT_URL | None | Prikazano obiskovalcem, ki so odjavljeni; privzeto na reverse("login"/"logout"). |
SSO.USER_MAP | id/email/username | FastComments polje do uporabniškega atributa/poti/klicne funkcije. |
SSO.IS_ADMIN / IS_MODERATOR / GROUP_IDS | None | callable(user) ali pot z ločnicami. |
SSO.USER_MAPPER | None | Pot z ločnicami do callable(user) -> dict; najvišja prednost. |
WIDGET_DEFAULTS | {} | Konfiguracija, združena v vsak widget (ključi v camelCase). |
Primer projekta 
Izvedljiva predstavitev se nahaja v example/: lev stolpec + glavni oder
aplikacija z eno stranjo na pripomoček in prijavno stranjo, ki prikazuje vnaprej vnešene demo uporabnike.
Prijavite se kot kateri koli od njih, in pripomočki za komentarje ter klepet v živo overijo to
identiteto prek Secure SSO. Iz tega direktorija:
python manage.py migrate
# Uporabite svoj najemnik, da vidite Secure SSO v delovanju (API skrivnost ga omogoča):
FASTCOMMENTS_TENANT_ID=... FASTCOMMENTS_API_KEY=... python manage.py runserver
Brez API skrivnosti se vrne na javnega demo najemnika (anonimen).
example/browser_smoke.py je Playwright e2e
ki naloži stran v pravem brskalniku in objavi komentar kot Secure-SSO
uporabnik.
Potrebujete pomoč?
Če naletite na kakršnekoli težave ali imate vprašanja o paketu Django, prosimo:
Prispevanje
Prispevki so dobrodošli! Prosimo, obiščite repozitorij na GitHubu za smernice za prispevanje.