
Γλώσσα 🇨🇾 Ελληνικά (Κύπρος)
Τεκμηρίωση
Ξεκινώντας
Χρήση
Αναφορά API
Προσθήκη σχολίων στην εφαρμογή Django σας
This is the official Django Package for FastComments.
Live commenting and chat components with Secure SSO via template tags.
Repository
Απαιτήσεις 
- Python 3.10+
- Django 4.2, 5.0, 5.1, or 5.2
- Ένα FastComments tenant ID (χρησιμοποιήστε
demoγια να το δοκιμάσετε χωρίς λογαριασμό) - Απαιτείται ένα μυστικό API μόνο για 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 σε οποιοδήποτε template:
{% load fastcomments %}
{% fastcomments url_id="my-page" %}
Προαπαιτούμενα για αυτόματη SSO 
Για να περάσετε τον συνδεδεμένο χρήστη στο widget αυτόματα, οι ετικέτες διαβάζουν τον τρέχοντα χρήστη από το αίτημα. Βεβαιωθείτε ότι το έργο σας περιλαμβάνει και τα δύο (είναι ενεργά εξ 'ορισμού σε ένα τυπικό έργο Django):
django.template.context_processors.requestστοTEMPLATES["OPTIONS"]["context_processors"]django.contrib.auth.middleware.AuthenticationMiddlewareστοMIDDLEWARE
Χωρίς αίτημα στο context του προτύπου, τα widgets εμφανίζονται για ανώνυμο επισκέπτη. Μπορείτε πάντα να περάσετε έναν χρήστη ρητά: {% fastcomments user=some_user %}.
Ετικέτες widget 
Κάθε στοιχείο έχει τη δική του ετικέτα. Όλα αποδέχονται τα ορίσματα‑λέξεις‑κλειδιά **extra, τα οποία ενσωματώνονται στη διαμόρφωση του στοιχείου ακριβώς όπως είναι (χρησιμοποιήστε κλειδιά camelCase) για οτιδήποτε δεν καλύπτεται από τις ονομαστικές παραμέτρους παρακάτω.
| Ετικέτα | Στοιχείο |
|---|---|
{% 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 του στοιχείου:
| Παράμετρος | Κλειδί διαμόρφωσης | Ετικέτες |
|---|---|---|
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 για ευκολία χωρίς διαμόρφωση, αλλά τα διαδοχικά ακέραια PK είναι μετρήσιμα και δύσκολα να αλλάξουν αργότερα (η αλλαγή τουidενός χρήστη χωρίζει το ιστορικό του σε νέο λογαριασμό). Για οτιδήποτε πέρα από ένα demo, αντιστοιχίστε το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)
# Δημιουργήστε ένα διακριτικό SSO για κλήσεις API ή παράδοση πελάτη:
token = get_manager().sso().token_for(request.user)
Περιοχή ΕΕ 
Ορίστε το REGION για να δρομολογήσετε τα widgets και το API στην ΕΕ:
FASTCOMMENTS = {"TENANT_ID": "...", "REGION": "eu"}
Προσαρμογή της ενσωματωμένης σήμανσης 
Αντικαταστήστε το fastcomments/widget.html τοποθετώντας το δικό σας αντίγραφο νωρίτερα στη
διαδρομή αναζήτησης προτύπων (ένα πρότζεκτ templates/fastcomments/widget.html). Αυτό είναι
το Django ανάλογο του vendor:publish --tag=fastcomments-views του Laravel.
Αναφορά ρυθμίσεων 
| Key | Default | Description |
|---|---|---|
TENANT_ID | "" | Το tenant ID του FastComments (demo για δοκιμές). |
API_KEY | "" | Το μυστικό API σας. Υπογράφει Secure SSO και πιστοποιεί το admin(). |
REGION | None | None για US, "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 προς attribute/path/callable του χρήστη. |
SSO.IS_ADMIN / IS_MODERATOR / GROUP_IDS | None | callable(user) ή διαδρομή με τελείες. |
SSO.USER_MAPPER | None | Διαδρομή με τελείες προς callable(user) -> dict; υψηλότερη προτεραιότητα. |
WIDGET_DEFAULTS | {} | Διαμόρφωση που συγχωνεύεται σε κάθε widget (κλειδιά camelCase). |
Παράδειγμα έργου 
Μία εκτελέσιμη επίδειξη βρίσκεται στο example/: μια εφαρμογή με αριστερό rail + κύριο στάδιο, με μια σελίδα ανά 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 secret επιστρέφει στον δημόσιο demo tenant (ανώνυμο). Το example/browser_smoke.py είναι ένα Playwright e2e που φορτώνει τη σελίδα σε πραγματικό πρόγραμμα περιήγησης και δημοσιεύει ένα σχόλιο ως ο χρήστης Secure‑SSO.
Χρειάζεστε βοήθεια;
Εάν αντιμετωπίσετε οποιοδήποτε πρόβλημα ή έχετε ερωτήσεις σχετικά με το πακέτο Django, παρακαλούμε:
Συμβολή
Οι συνεισφορές είναι ευπρόσδεκτες! Παρακαλούμε επισκεφθείτε το αποθετήριο GitHub για οδηγίες συνεισφοράς.