
भाषा 🇮🇳 हिन्दी
दस्तावेज़ीकरण
शुरुआत करें
उपयोग
API संदर्भ
अपने Django ऐप में टिप्पणियाँ जोड़ें
यह FastComments का आधिकारिक Django पैकेज है।
टेम्पलेट टैग्स के माध्यम से सुरक्षित SSO के साथ लाइव कमेंटिंग और चैट कंपोनेंट्स।
रिपॉज़िटरी
AI कोडिंग एजेंट 
अपने कोडिंग एजेंट को FastComments का वह संदर्भ दें जिसकी उसे आवश्यकता है - विजेट्स, कॉन्फ़िगरेशन, Secure SSO, REST API और SDKs:
npx skills add fastcomments/skills
यह Claude Code, Codex, Cursor, Copilot, Gemini और skills CLI द्वारा समर्थित हर अन्य एजेंट के साथ काम करता है।
आवश्यकताएँ 
- 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"),
}
विजेट को किसी भी टेम्पलेट में जोड़ें:
{% load fastcomments %}
{% fastcomments url_id="my-page" %}
स्वचालित SSO के लिए पूर्वापेक्षाएँ 
लॉग-इन किए गए उपयोगकर्ता को विजेट में स्वचालित रूप से पास करने के लिए, टैग रिक्वेस्ट से वर्तमान उपयोगकर्ता को पढ़ते हैं। सुनिश्चित करें कि आपके प्रोजेक्ट में ये दोनों मौजूद हैं (ये एक मानक Django प्रोजेक्ट में डिफ़ॉल्ट रूप से चालू रहते हैं):
TEMPLATES["OPTIONS"]["context_processors"]मेंdjango.template.context_processors.requestMIDDLEWAREमेंdjango.contrib.auth.middleware.AuthenticationMiddleware
टेम्पलेट कॉन्टेक्स्ट में रिक्वेस्ट न होने पर, विजेट एक अनाम (anonymous) विज़िटर के लिए रेंडर होते हैं। आप हमेशा उपयोगकर्ता को स्पष्ट रूप से पास कर सकते हैं: {% fastcomments user=some_user %}।
विजेट टैग 
हर विजेट का अपना टैग होता है। इन सभी में **extra कीवर्ड आर्ग्युमेंट्स स्वीकार किए जाते हैं, जो विजेट कॉन्फ़िग में जैसे हैं वैसे मर्ज कर दिए जाते हैं (camelCase कुंजियों का उपयोग करें) — नीचे दिए गए नामित आर्ग्युमेंट्स से जो कुछ भी कवर नहीं है उसके लिए।
| टैग | विजेट |
|---|---|
{% fastcomments %} | टिप्पणियाँ (Comments) |
{% 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 | 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 | सभी |
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, भेजा नहीं जाता) | collab chat, image chat |
chat_square_percentage | chatSquarePercentage | image chat |
user_id | userId | user activity |
उदाहरण:
{% 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 पेज पर मौजूद किसी एलिमेंट से जुड़ता है #}
<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 (सिंगल साइन-ऑन) 
settings.py में SSO सक्षम करें और एक मोड चुनें। Secure SSO आपके API secret का उपयोग करके HMAC-SHA256 के साथ यूज़र को सर्वर-साइड पर साइन करता है और यही अनुशंसित है।
FASTCOMMENTS = {
"TENANT_ID": os.environ["FASTCOMMENTS_TENANT_ID"],
"API_KEY": os.environ["FASTCOMMENTS_API_KEY"], # आपका API secret; Secure SSO साइन करता है
"SSO": {
"ENABLED": True,
"MODE": "secure", # "secure" | "simple"
# FastComments फ़ील्ड्स को अपने यूज़र मॉडल से मैप करें। मान एक attribute
# नाम, एक dotted path ("profile.avatar_url"), एक callable(user), या 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, या dotted path
"IS_MODERATOR": None,
"GROUP_IDS": None, # callable(user) -> list, या dotted path
},
}
SSO
idको सोच-समझकर चुनें। FastCommentsidयूज़र के कमेंट हिस्ट्री का स्थायी हैंडल है। डिफ़ॉल्टUSER_MAPइसे zero-config सुविधा के लिए आपकी Django primary key से मैप करता है, लेकिन क्रमागत integer PKs enumerable होते हैं और बाद में बदलना कठिन है (यूज़र काidबदलने से उनका हिस्ट्री एक नए अकाउंट में बंट जाता है)। डेमो से आगे किसी भी चीज़ के लिए,idको पहले से चुने गए एक स्थिर, अपारदर्शी मान (एक UUID या एक समर्पित public id) से मैप करें, और उसमें कभी निजी डेटा न रखें। उदाहरण ऐप इसी कारण से username-आधारित id का उपयोग करता है।
SSO वर्तमान यूज़र के लिए {% fastcomments %}, {% fastcomments_live_chat %},
{% fastcomments_collab_chat %}, {% fastcomments_image_chat %}, और
{% fastcomments_user_activity %} में स्वचालित रूप से इंजेक्ट हो जाता है।
साइन-आउट विज़िटर्स को दिखाए जाने वाले login/logout URLs डिफ़ॉल्ट रूप से reverse("login") /
reverse("logout") होते हैं; इन्हें SSO["LOGIN_URL"] / SSO["LOGOUT_URL"] से ओवरराइड करें।
कस्टम मैपिंग
दो उच्च-प्राथमिकता विकल्प USER_MAP को मात देते हैं:
-
आपके यूज़र मॉडल पर एक मेथड (एक इंटरफ़ेस का Pythonic एनालॉग):
class User(AbstractUser): def to_fastcomments_user_data(self): return {"id": self.pk, "email": self.email, "username": self.get_username()} -
एक ग्लोबल मैपर,
callable(user) -> dictका एक dotted path:FASTCOMMENTS = {"SSO": {"USER_MAPPER": "myapp.sso.map_user"}}
प्राथमिकता क्रम है USER_MAPPER > to_fastcomments_user_data() > USER_MAP।
सर्वर-साइड API एक्सेस 
[api] एक्स्ट्रा इंस्टॉल होने पर, FastComments REST API को SDK के माध्यम से कॉल करें,
जो आपकी API key और region के साथ पहले से कॉन्फ़िगर है:
from fastcomments_django import admin, public_api, get_manager
admin().get_comments("YOUR_TENANT_ID", ...) # authenticated (DefaultApi)
public_api().get_comments_public(...) # public (PublicApi)
# API कॉल या क्लाइंट हैंड-ऑफ़ के लिए SSO टोकन जनरेट करें:
token = get_manager().sso().token_for(request.user)
EU क्षेत्र 
EU के लिए विजेट और API को रूट करने के लिए REGION सेट करें:
FASTCOMMENTS = {"TENANT_ID": "...", "REGION": "eu"}
एम्बेड मार्कअप को अनुकूलित करना 
टेम्पलेट सर्च पाथ पर अपनी खुद की कॉपी पहले रखकर fastcomments/widget.html को ओवरराइड करें (प्रोजेक्ट का templates/fastcomments/widget.html)। यह Laravel के vendor:publish --tag=fastcomments-views का Django समतुल्य है।
सेटिंग्स संदर्भ 
| कुंजी | डिफ़ॉल्ट | विवरण |
|---|---|---|
TENANT_ID | "" | आपकी FastComments टेनेंट आईडी (परीक्षण के लिए demo)। |
API_KEY | "" | आपका API सीक्रेट। Secure SSO पर हस्ताक्षर करता है और admin() को प्रमाणित करता है। |
REGION | None | US के लिए None, EU क्षेत्र के लिए "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 | {} | हर विजेट में मर्ज किया जाने वाला कॉन्फ़िग (camelCase कुंजियाँ)। |
उदाहरण प्रोजेक्ट 
example/ में एक चलाने योग्य डेमो मौजूद है: एक left-rail + main-stage
ऐप, जिसमें प्रत्येक विजेट के लिए एक पेज और पहले से तैयार डेमो यूज़र्स की सूची दिखाने वाला साइन-इन पेज है।
इनमें से किसी भी यूज़र के रूप में साइन इन करें और कमेंट तथा live-chat विजेट Secure SSO के माध्यम से उस
पहचान को प्रमाणित कर लेते हैं। उस डायरेक्टरी से:
python manage.py migrate
# Secure SSO को एक्शन में देखने के लिए अपना tenant इस्तेमाल करें (इसके लिए एक API secret चाहिए):
FASTCOMMENTS_TENANT_ID=... FASTCOMMENTS_API_KEY=... python manage.py runserver
API secret न होने पर यह सार्वजनिक demo tenant (anonymous) पर वापस आ जाता है।
example/browser_smoke.py एक Playwright e2e है
जो असली ब्राउज़र में पेज लोड करता है और Secure-SSO
यूज़र के रूप में एक कमेंट पोस्ट करता है।
सहायता चाहिए?
यदि आपको Django Package के बारे में कोई समस्या आती है या कोई प्रश्न है, तो कृपया:
योगदान देना
योगदान का स्वागत है! कृपया योगदान दिशानिर्देशों के लिए GitHub रिपॉजिटरी देखें।