
Језик 🇷🇸 Српски
Dokumentacija
Početak
Upotreba
API referenca
Dodajte komentare u vašu Django aplikaciju
Ово је званични Django пакет за FastComments.
Коментари уживо и компоненте за ћаскање са безбедним SSO преко шаблонских ознака.
Репозиторијум
Zahtevi 
- Python 3.10+
- Django 4.2, 5.0, 5.1, or 5.2
- FastComments tenant ID (koristite
demoda isprobate bez naloga) - API tajna je potrebna samo za Secure SSO
Instalacija 
Instalirajte sa oznakom izdanja (ovaj projekat se distribuira putem git oznaka, a ne putem PyPI):
pip install "git+https://github.com/fastcomments/fastcomments-django.git@v0.1.0"
Za pristup REST-u na serverskoj strani (pomoćne funkcije admin() / public_api()), dodajte api dodatak, koji učitava generisanog klijenta iz SDK-a:
pip install "fastcomments-django[api] @ git+https://github.com/fastcomments/fastcomments-django.git@v0.1.0"
Dodajte aplikaciju u 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 
Da biste automatski prosledili prijavljenog korisnika widgetu, tagovi čitaju trenutnog korisnika iz zahteva. Uverite se da vaš projekat ima oba ova podešavanja (podrazumevano su uključena u standardnom Django projektu):
django.template.context_processors.requestuTEMPLATES["OPTIONS"]["context_processors"]django.contrib.auth.middleware.AuthenticationMiddlewareuMIDDLEWARE
Bez zahteva u kontekstu šablona, widgeti se renderuju za anonimnog
posetioca. Uvek možete izričito proslediti korisnika: {% fastcomments user=some_user %}.
Oznake vidžeta 
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.
| Tag | Widget |
|---|---|
{% fastcomments %} | Komentari |
{% fastcomments_live_chat %} | Uživo čet |
{% fastcomments_comment_count %} | Značka broja komentara |
{% fastcomments_comment_count_bulk %} + {% fastcomments_count_marker %} | Skupni brojevi komentara |
{% fastcomments_collab_chat target="#el" %} | Kolaborativni (inline) čet |
{% fastcomments_image_chat target="#el" %} | Čet za anotaciju slika |
{% fastcomments_recent_comments %} | Nedavni komentari |
{% fastcomments_recent_discussions %} | Nedavne diskusije |
{% fastcomments_reviews_summary %} | Pregled recenzija |
{% fastcomments_top_pages %} | Najviše diskutovane stranice |
{% fastcomments_user_activity user_id="..." %} | Tok aktivnosti korisnika |
Named arguments map to the widget's camelCase config keys:
| Argument | Config key | Tags |
|---|---|---|
url_id | urlId | komentari, uživo čet, broj komentara, kolaborativni/čet za slike, nedavni komentari, pregled recenzija |
url | url | komentari, uživo čet, kolaborativni/čet za slike |
readonly | readonly | komentari, uživo čet, kolaborativni/čet za slike |
locale | locale | komentari, uživo čet, kolaborativni/čet za slike, aktivnost korisnika |
has_dark_background | hasDarkBackground | sve |
default_sort_direction | defaultSortDirection | komentari, uživo čet, kolaborativni/čet za slike |
number_only | numberOnly | broj komentara |
is_live | isLive | broj komentara |
count | count | nedavni komentari, nedavne diskusije |
target | (querySelector, not sent) | kolaborativni čet, čet za slike |
chat_square_percentage | chatSquarePercentage | čet za slike |
user_id | userId | aktivnost korisnika |
Examples:
{% 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 %}
{# Kolaborativni čet se prikači na postojeći element na stranici #}
<article id="post-body">...</article>
{% fastcomments_collab_chat target="#post-body" %}
{# Skupni brojevi: postavite markere, zatim jedan skupni učitač popuni sve #}
{% 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 izaberite režim u settings.py. Secure SSO potpisuje korisnika na serveru koristeći HMAC‑SHA256 sa 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"], # vaš API tajni ključ; potpisuje Secure SSO
"SSO": {
"ENABLED": True,
"MODE": "secure", # "secure" | "simple"
# Mapirajte FastComments polja na vaš korisnički model. Vrednosti mogu biti atribut
# ime, putu razdvojenom tačkama ("profile.avatar_url"), poziv(user), ili None.
"USER_MAP": {
"id": "id",
"email": "email",
"username": "username",
"avatar": None,
"display_name": None,
"website_url": None,
},
"IS_ADMIN": lambda user: user.is_staff, # poziv(user) -> bool, ili put razdvojen tačkama
"IS_MODERATOR": None,
"GROUP_IDS": None, # poziv(user) -> list, ili put razdvojen tačkama
},
}
Izaberite SSO
idnamerno. FastCommentsidje trajni identifikator za istoriju komentara korisnika. PodrazumevaniUSER_MAPga mapira na vaš Django primarni ključ radi praktičnosti bez dodatne konfiguracije, ali sekvencijalni integer PK‑ovi su brojivi i teško ih je menjati kasnije (promenaidkorisnika deli njihovu istoriju u novi nalog). Za sve što prevazilazi demo, mapirajteidna stabilnu, neprozirnu vrednost izabranu unapred (UUID ili posvećeni javni id), i nikada ne stavljajte privatne podatke u njega. Primer aplikacije koristi id zasnovan na korisničkom imenu iz ovog razloga.
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 koji se prikazuju posetiocima koji nisu prijavljeni podrazumevano su reverse("login") / reverse("logout"); možete ih prepisati koristeći SSO["LOGIN_URL"] / SSO["LOGOUT_URL"].
Prilagođeno mapiranje
Postoje dve opcije višeg prioriteta koje nadmašuju USER_MAP:
-
Metod na vašem korisničkom modelu (Python analog interfejsa):
class User(AbstractUser): def to_fastcomments_user_data(self): return {"id": self.pk, "email": self.email, "username": self.get_username()} -
Globalni mapirator, put razdvojen tačkama 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 servera 
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 
Postavite REGION da usmerite vidžete i API na EU:
FASTCOMMENTS = {"TENANT_ID": "...", "REGION": "eu"}
Prilagođavanje embed koda 
Zamenite fastcomments/widget.html tako što ćete postaviti svoju kopiju ranije na putanju za pretragu šablona (projekat templates/fastcomments/widget.html). Ovo je Django analog Laravel‑ovog vendor:publish --tag=fastcomments-views.
Referenca podešavanja 
| Ključ | Podrazumevano | Opis |
|---|---|---|
TENANT_ID | "" | Vaš FastComments tenant ID (demo za testiranje). |
API_KEY | "" | Vaša API tajna. Potpisuje Secure SSO i autentifikuje admin(). |
REGION | None | None za SAD, "eu" za EU region. |
SSO.ENABLED | False | Uključite SSO. |
SSO.MODE | "secure" | "secure" (HMAC) ili "simple" (nepotpisano). |
SSO.LOGIN_URL / SSO.LOGOUT_URL | None | Prikazano posetiocima koji su odjavljeni; podrazumevano na reverse("login"/"logout"). |
SSO.USER_MAP | id/email/username | FastComments polje do korisničkog atributa/putanje/funkcije. |
SSO.IS_ADMIN / IS_MODERATOR / GROUP_IDS | None | callable(user) ili putanja sa tačkama. |
SSO.USER_MAPPER | None | Putanja sa tačkama do callable(user) -> dict; najviši prioritet. |
WIDGET_DEFAULTS | {} | Konfiguracija spojena u svaki widget (camelCase ključevi). |
Primer projekta 
Pokretljiva demonstracija se nalazi u example/: aplikacija sa levim panelom + glavnom scenom
sa stranicom po widgetu i stranicom za prijavu koja prikazuje unapred semplovane demo korisnike.
Prijavite se kao bilo koji od njih i widgeti za komentare i live‑chat autentišu taj identitet putem Secure SSO. Iz tog direktorijuma:
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
Bez API tajne vraća se na javnog demo tenant-a (anoniman).
example/browser_smoke.py je Playwright e2e
koji učitava stranicu u pravom pregledniku i objavljuje komentar kao Secure‑SSO
korisnik.
Потребна помоћ?
Ако наилазите на било какве проблеме или имате питања у вези са Django пакетом, молимо вас:
Допринесите
Доприноси су добродошли! Молимо посетите GitHub репозиторијум за смернице о доприносу.