
Γλώσσα 🇬🇷 Ελληνικά
Τεκμηρίωση
Ξεκίνημα
Χρήση
Αναφορά API
Προσθήκη Σχολίων στην Εφαρμογή Django σας
Αυτή είναι η επίσημη πακέτο Django για το FastComments.
Στοιχεία ζωντανής σχολιασμού και συνομιλίας με ασφαλή SSO μέσω ετικετών προτύπων.
Αποθετήριο
Απαιτήσεις 
- Python 3.10+
- Django 4.2, 5.0, 5.1, ή 5.2
- Ένα FastComments tenant ID (χρησιμοποιήστε
demoγια δοκιμή χωρίς λογαριασμό) - Απαιτείται ένα API secret μόνο για Secure SSO
Εγκατάσταση 
Εγκατάσταση από ετικέτα έκδοσης (αυτό το έργο διανέμεται μέσω ετικετών git, όχι μέσω PyPI):
pip install "git+https://github.com/fastcomments/fastcomments-django.git@v0.1.0"
Για πρόσβαση REST από την πλευρά του διακομιστή (οι βοηθητικές συναρτήσεις admin() / public_api()), προσθέστε το πρόσθετο api, το οποίο φέρνει τον παραγόμενο πελάτη του SDK:
pip install "fastcomments-django[api] @ git+https://github.com/fastcomments/fastcomments-django.git@v0.1.0"
Προσθέστε την εφαρμογή στο INSTALLED_APPS:
INSTALLED_APPS = [
# ...
"fastcomments_django",
]
Γρήγορη Εκκίνηση 
Διαμορφώστε το ενοικιαστή σας στο settings.py:
import os
FASTCOMMENTS = {
"TENANT_ID": os.environ.get("FASTCOMMENTS_TENANT_ID", "demo"),
}
Τοποθετήστε το widget σε οποιοδήποτε πρότυπο:
{% load fastcomments %}
{% fastcomments url_id="my-page" %}
Προαπαιτούμενα για αυτόματη Ενιαία Σύνδεση (SSO) 
Για να περάσετε τον συνδεδεμένο χρήστη στο widget αυτόματα, οι ετικέτες διαβάζουν τον τρέχοντα χρήστη από το αίτημα. Βεβαιωθείτε ότι το έργο σας περιλαμβάνει και τα δύο (είναι ενεργοποιημένα εξ ορισμού σε ένα τυπικό έργο Django):
django.template.context_processors.requestinTEMPLATES["OPTIONS"]["context_processors"]django.contrib.auth.middleware.AuthenticationMiddlewareinMIDDLEWARE
Χωρίς ένα αίτημα στο πλαίσιο του προτύπου, τα widgets αποδίδονται για έναν ανώνυμο επισκέπτη. Μπορείτε πάντα να περάσετε έναν χρήστη ρητά: {% fastcomments user=some_user %}.
Ετικέτες Widget 
Κάθε widget έχει τη δική του ετικέτα. Όλα αποδεχθούν extra ορίσματα λέξεων‑κλειδιών, τα οποία ενσωματώνονται στη διαμόρφωση του widget όπως είναι (χρησιμοποιήστε κλειδιά camelCase) για οτιδήποτε δεν καλύπτεται από τα ονομαστικά ορίσματα παρακάτω.
| Ετικέτα | Widget |
|---|---|
{% fastcomments %} | Σχόλια |
{% fastcomments_live_chat %} | Ζωντανή συνομιλία |
{% fastcomments_comment_count %} | Ένδειξη αριθμού σχολίων |
{% fastcomments_comment_count_bulk %} + {% fastcomments_count_marker %} | Μαζικοί μετρητές σχολίων |
{% fastcomments_collab_chat target="#el" %} | Συνεργατική (ενσωματωμένη) συνομιλία |
{% fastcomments_image_chat target="#el" %} | Συνομιλία σχολιασμού εικόνας |
{% fastcomments_recent_comments %} | Πρόσφατα σχόλια |
{% fastcomments_recent_discussions %} | Πρόσφατες συζητήσεις |
{% fastcomments_reviews_summary %} | Περίληψη αξιολογήσεων |
{% fastcomments_top_pages %} | Σελίδες με τις περισσότερες συζητήσεις |
{% fastcomments_user_activity user_id="..." %} | Ροή δραστηριότητας χρήστη |
Τα ονομαστικά ορίσματα αντιστοιχούν στα κλειδιά camelCase της διαμόρφωσης του widget:
| Παράμετρος | Κλειδί ρυθμίσεων | Ετικέτες |
|---|---|---|
url_id | urlId | σχόλια, ζωντανή συνομιλία, ένδειξη αριθμού, συνεργατική/εικόνα συνομιλία, πρόσφατα σχόλια, περίληψη αξιολογήσεων |
url | url | σχόλια, ζωντανή συνομιλία, συνεργατική/εικόνα συνομιλία |
readonly | readonly | σχόλια, ζωντανή συνομιλία, συνεργατική/εικόνα συνομιλία |
locale | locale | σχόλια, ζωντανή συνομιλία, συνεργατική/εικόνα συνομιλία, δραστηριότητα χρήστη |
has_dark_background | hasDarkBackground | όλα |
default_sort_direction | defaultSortDirection | σχόλια, ζωντανή συνομιλία, συνεργατική/εικόνα συνομιλία |
number_only | numberOnly | ένδειξη αριθμού |
is_live | isLive | ένδειξη αριθμού |
count | count | πρόσφατα σχόλια, πρόσφατες συζητήσεις |
target | (querySelector, not sent) | συνεργατική συνομιλία, εικόνα συνομιλία |
chat_square_percentage | chatSquarePercentage | εικόνα συνομιλία |
user_id | userId | δραστηριότητα χρήστη |
Παραδείγματα:
{% 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 %}
{# Η Συνεργατική συνομιλία προσδένεται σε ένα υπάρχον στοιχείο στη σελίδα #}
<article id="post-body">...</article>
{% fastcomments_collab_chat target="#post-body" %}
{# Μαζικοί μετρητές: τοποθετήστε δείκτες, στη συνέχεια ένας μαζικός φορτωτής τα γεμίζει όλα #}
{% 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 (Ενιαία Σύνδεση) 
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"], # 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
},
}
Επιλέξτε το SSO
idσκόπιμα. Τοidτου FastComments είναι ο μόνιμος αναγνωριστής για το ιστορικό σχολίων ενός χρήστη. Το προεπιλεγμένοUSER_MAPτο αντιστοιχίζει στο πρωτεύον κλειδί του Django για ευκολία χωρίς ρύθμιση, αλλά τα διαδοχικά ακέραια PKs είναι αριθμήσιμα και δύσκολα να αλλάξουν αργότερα (η αλλαγή τουidενός χρήστη χωρίζει το ιστορικό του σε νέο λογαριασμό). Για οτιδήποτε πέρα από μια επίδειξη, αντιστοιχίστε τοidσε μια σταθερή, αδιαφανή τιμή που επιλέγεται εκ των προτέρων (ένα UUID ή ένα αφιερωμένο δημόσιο id) και μην τοποθετείτε ποτέ ιδιωτικά δεδομένα σε αυτό. Η παράδειγμα εφαρμογή χρησιμοποιεί έναidβασισμένο στο όνομα χρήστη για αυτόν τον λόγο.
SSO is injected automatically into {% fastcomments %}, {% fastcomments_live_chat %},
{% fastcomments_collab_chat %}, {% fastcomments_image_chat %}, and
{% fastcomments_user_activity %} for the current user.
Login/logout URLs shown to signed-out visitors default to reverse("login") / reverse("logout"); override them with SSO["LOGIN_URL"] / SSO["LOGOUT_URL"].
Custom mapping
Two higher-precedence options beat USER_MAP:
-
Μια μέθοδος στο μοντέλο χρήστη σας (the Pythonic analog of an interface):
class User(AbstractUser): def to_fastcomments_user_data(self): return {"id": self.pk, "email": self.email, "username": self.get_username()} -
Ένας παγκόσμιος mapper, a dotted path to
callable(user) -> dict:FASTCOMMENTS = {"SSO": {"USER_MAPPER": "myapp.sso.map_user"}}
Precedence is USER_MAPPER > to_fastcomments_user_data() > USER_MAP.
Πρόσβαση API από τον διακομιστή 
Με το πρόσθετο [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)
# Δημιουργήστε ένα token SSO για κλήσεις API ή παράδοση πελάτη:
token = get_manager().sso().token_for(request.user)
Περιοχή ΕΕ 
Ορίστε το REGION για να δρομολογήσετε τα widgets και το API στην ΕΕ:
FASTCOMMENTS = {"TENANT_ID": "...", "REGION": "eu"}
Προσαρμογή του κώδικα ενσωμάτωσης 
Αντικαταστήστε το fastcomments/widget.html τοποθετώντας το δικό σας αντίγραφο νωρίτερα στη
διαδρομή αναζήτησης προτύπων (ένα project templates/fastcomments/widget.html). Αυτό είναι
το Django αντίστοιχο του Laravel's vendor:publish --tag=fastcomments-views.
Αναφορά Ρυθμίσεων 
| Key | Default | Description |
|---|---|---|
TENANT_ID | "" | Το tenant ID του FastComments (demo για δοκιμή). |
API_KEY | "" | Το μυστικό API σας. Υπογράφει το Secure SSO και πιστοποιεί το admin(). |
REGION | None | None για τις ΗΠΑ, "eu" για την περιοχή της ΕΕ. |
SSO.ENABLED | False | Ενεργοποιήστε το SSO. |
SSO.MODE | "secure" | "secure" (HMAC) ή "simple" (μη υπογεγραμμένο). |
SSO.LOGIN_URL / SSO.LOGOUT_URL | None | Εμφανίζεται στους επισκέπτες που έχουν αποσυνδεθεί· προεπιλογή είναι reverse("login"/"logout"). |
SSO.USER_MAP | id/email/username | Πεδίο FastComments προς χαρακτηριστικό/διαδρομή/κλήση χρήστη. |
SSO.IS_ADMIN / IS_MODERATOR / GROUP_IDS | None | callable(user) ή διαδρομή με τελείες. |
SSO.USER_MAPPER | None | Διαδρομή με τελείες προς callable(user) -> dict; υψιότερη προτεραιότητα. |
WIDGET_DEFAULTS | {} | Διαμόρφωση ενσωματωμένη σε κάθε widget (κλειδιά camelCase). |
Παράδειγμα έργου 
Μια εκτελέσιμη παρουσίαση βρίσκεται στο example/: μια εφαρμογή με αριστερή μπάρα + κύριο σκηνικό με μια σελίδα ανά widget και μια σελίδα σύνδεσης που εμφανίζει προ-σπόρους χρήστες demo.
Συνδεθείτε με οποιονδήποτε από αυτούς και τα widgets σχολίων και ζωντανής συνομιλίας επαληθεύουν αυτήν την ταυτότητα μέσω Secure SSO. Από αυτόν τον φάκελο:
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
Χωρίς μυστικό API επιστρέφει στον δημόσιο demo ενοικιαστή (ανώνυμο).
example/browser_smoke.py είναι ένα Playwright e2e που φορτώνει τη σελίδα σε πραγματικό πρόγραμμα περιήγησης και στέλνει ένα σχόλιο ως ο χρήστης Secure-SSO.
Χρειάζεστε βοήθεια;
Αν αντιμετωπίσετε προβλήματα ή έχετε ερωτήσεις σχετικά με το πακέτο Django, παρακαλούμε:
Συνεισφορά
Οι συνεισφορές είναι ευπρόσδεκτες! Παρακαλούμε επισκεφθείτε το αποθετήριο GitHub για οδηγίες συνεισφοράς.