
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
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",
]
Hitri 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 samodejno 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 (Enotna prijava) 
Enable SSO and choose a mode in settings.py. Secure SSO signs the user
server-side with HMAC‑SHA256 using your API secret and is recommended.
FASTCOMMENTS = {
"TENANT_ID": os.environ["FASTCOMMENTS_TENANT_ID"],
"API_KEY": os.environ["FASTCOMMENTS_API_KEY"], # vaš API skrivni ključ; podpira Secure SSO
"SSO": {
"ENABLED": True,
"MODE": "secure", # "secure" | "simple"
# Preslikajte polja FastComments v vaš uporabniški model. Vrednosti so lahko atribut
# ime, pot v obliki točk ("profile.avatar_url"), klicna funkcija(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, # klicna funkcija(user) -> bool, ali pot v obliki točk
"IS_MODERATOR": None,
"GROUP_IDS": None, # klicna funkcija(user) -> list, ali pot v obliki točk
},
}
Izberite SSO
idnamerno. FastCommentsidje trajen identifikator za zgodovino komentarjev uporabnika. PrivzetiUSER_MAPga preslika v vaš Django primarni ključ za priročnost brez dodatne konfiguracije, vendar so zaporedni celoštevilski PK-ji preštevljivi in jih je kasneje težko spremeniti (sprememba uporabnikovegaidrazdeli njihovo zgodovino v nov račun). Za vse, kar presega demo, preslikajteidv stabilno, neprozorno vrednost, izbrano vnaprej (UUID ali namenski javni id), in v njem nikoli ne shranjujte zasebnih podatkov. Primerna aplikacija uporablja za to namen ID, ki temelji na uporabniškem imenu.
SSO se vključi samodejno v {% fastcomments %}, {% fastcomments_live_chat %},
{% fastcomments_collab_chat %}, {% fastcomments_image_chat %} in
{% fastcomments_user_activity %} za trenutnega uporabnika.
Login/logout URLs shown to signed‑out visitors default to reverse("login") /
reverse("logout"); override them with SSO["LOGIN_URL"] / SSO["LOGOUT_URL"].
Prilagojeno preslikovanje
Dve možnosti z višjo prednostjo presegata USER_MAP:
-
Metoda v vašem uporabniškem modelu (Pythonic analog vmesnika):
class User(AbstractUser): def to_fastcomments_user_data(self): return {"id": self.pk, "email": self.email, "username": self.get_username()} -
Globalni preslikovalec, pot v obliki točk do
callable(user) -> dict:FASTCOMMENTS = {"SSO": {"USER_MAPPER": "myapp.sso.map_user"}}
Prednost je USER_MAPPER > to_fastcomments_user_data() > USER_MAP.
Dostop do strežniškega API-ja 
With the [api] extra installed, call the FastComments REST API through the SDK,
pre-configured with your API key and region:
from fastcomments_django import admin, public_api, get_manager
admin().get_comments("YOUR_TENANT_ID", ...) # avtenticirano (DefaultApi)
public_api().get_comments_public(...) # javno (PublicApi)
# Ustvari SSO žeton za API klice ali prenos stranke:
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.