Location: /topic/1-welcome?page=1#pid1
The Flask Debug Toolbar has intercepted a redirect to the above URL for
debug viewing purposes. You can click the above link to continue with the
redirect as normal. If you'd like to disable this feature, you can set the
config variable DEBUG_TB_INTERCEPT_REDIRECTS to False.
Current Site Packages Directory:
/usr/local/lib/python3.12/site-packages
| Package | Version | Homepage | Summary |
|---|---|---|---|
| alembic | 1.18.4 | None | A database migration tool for SQLAlchemy. |
| amqp | 5.3.1 | http://github.com/celery/py-amqp | Low-level AMQP client for Python (fork of amqplib). |
| attrs | 26.1.0 | None | Classes Without Boilerplate |
| babel | 2.18.0 | https://babel.pocoo.org/ | Internationalization utilities |
| billiard | 4.2.4 | https://github.com/celery/billiard | Python multiprocessing fork with improvements and bugfixes |
| blinker | 1.9.0 | None | Fast, simple object-to-object and broadcast signaling |
| cachelib | 0.14.0 | None | A collection of cache libraries in the same API interface. |
| celery | 5.6.3 | https://docs.celeryq.dev/ | Distributed Task Queue. |
| certifi | 2026.5.20 | https://github.com/certifi/python-certifi | Python package for providing Mozilla's CA Bundle. |
| charset-normalizer | 3.4.7 | None | The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet. |
| click | 8.4.1 | None | Composable command line interface toolkit |
| click-didyoumean | 0.3.1 | https://github.com/click-contrib/click-didyoumean | Enables git-like *did-you-mean* feature in click |
| click-log | 0.4.0 | https://github.com/click-contrib/click-log | Logging integration for Click |
| click-plugins | 1.1.1.2 | https://github.com/click-contrib/click-plugins | An extension module for click to enable registering CLI commands via setuptools entry-points. |
| click-repl | 0.3.0 | https://github.com/untitaker/click-repl | REPL plugin for Click |
| Deprecated | 1.3.1 | https://github.com/laurent-laporte-pro/deprecated | Python @deprecated decorator to deprecate old python classes, functions or methods. |
| dnspython | 2.8.0 | None | DNS toolkit |
| email-validator | 2.3.0 | https://github.com/JoshData/python-email-validator | A robust email address syntax and deliverability validation library. |
| Flask | 3.1.3 | None | A simple framework for building complex web applications. |
| Flask-Alembic | 3.2.0 | None | Integrate Alembic with Flask. |
| Flask-Allows2 | 1.2.0 | None | Impose authorization requirements on Flask routes |
| Flask-BabelPlus | 2.4.1 | None | Adds i18n/l10n support to Flask applications |
| Flask-Caching | 2.4.0 | None | Adds caching support to Flask applications. |
| Flask-DebugToolbar | 0.16.0 | None | A toolbar overlay for debugging Flask applications. |
| flask-debugtoolbar-warnings | 0.1.0 | https://github.com/flaskbb/flask-debugtoolbar-warnings | Adds warnings support to Flask-Debugtoolbar |
| Flask-Limiter | 4.1.1 | None | Rate limiting for flask applications |
| Flask-Login | 0.6.3 | https://github.com/maxcountryman/flask-login | User authentication and session management for Flask. |
| Flask-Mail | 0.10.0 | None | Flask extension for sending email |
| flask-redis | 0.4.0 | https://github.com/underyx/flask-redis/ | A nice way to use Redis in your Flask app |
| Flask-SQLAlchemy | 3.1.1 | None | Add SQLAlchemy support to your Flask application. |
| Flask-Themes2 | 1.0.1 | https://github.com/sysr-q/flask-themes2 | Provides infrastructure for theming Flask applications |
| flask-whooshee | 0.9.1 | https://github.com/fedora-copr/flask-whooshee | Flask-SQLAlchemy - Whoosh Integration |
| Flask-WTF | 1.3.0 | None | Form rendering, validation, and CSRF protection for Flask with WTForms. |
| FlaskBB | 2.2.0 | None | A classic Forum Software in Python using Flask. |
| flaskbb-plugin-conversations | 2.0.1 | None | A private messaging plugin for FlaskBB |
| flaskbb-plugin-portal | 2.0.0 | None | A portal plugin for FlaskBB. |
| greenlet | 3.5.1 | None | Lightweight in-process concurrent programming |
| gunicorn | 26.0.0 | None | WSGI HTTP Server for UNIX |
| idna | 3.18 | None | Internationalized Domain Names in Applications (IDNA) |
| itsdangerous | 2.2.0 | None | Safely pass data to untrusted environments and back. |
| Jinja2 | 3.1.6 | None | A very fast and expressive template engine. |
| kombu | 5.6.2 | https://kombu.readthedocs.io | Messaging library for Python. |
| limits | 5.8.0 | None | Rate limiting utilities |
| Mako | 1.3.12 | https://www.makotemplates.org/ | A super-fast templating language that borrows the best ideas from the existing templating languages. |
| MarkupSafe | 3.0.3 | None | Safely add untrusted strings to HTML/XML markup. |
| mistune | 3.2.1 | None | A sane and fast Markdown parser with useful plugins and renderers |
| ordered-set | 4.1.0 | None | An OrderedSet is a custom MutableSet that remembers its order, so that every |
| packaging | 26.2 | None | Core utilities for Python packages |
| pillow | 12.2.0 | None | Python Imaging Library (fork) |
| pip | 26.1.2 | None | The PyPA recommended tool for installing Python packages. |
| pluggy | 1.6.0 | None | plugin and hook calling mechanisms for python |
| prompt_toolkit | 3.0.52 | None | Library for building powerful interactive command lines in Python |
| Pygments | 2.20.0 | None | Pygments is a syntax highlighting package written in Python. |
| PyJWT | 2.13.0 | None | JSON Web Token implementation in Python |
| python-dateutil | 2.9.0.post0 | https://github.com/dateutil/dateutil | Extensions to the standard Python datetime module |
| pytz | 2026.2 | http://pythonhosted.org/pytz | World timezone definitions, modern and historical |
| redis | 8.0.0 | None | Python client for Redis database and key-value store |
| requests | 2.34.2 | None | Python HTTP for Humans. |
| setuptools | 80.10.2 | None | Easily download, build, install, upgrade, and uninstall Python packages |
| six | 1.17.0 | https://github.com/benjaminp/six | Python 2 and 3 compatibility utilities |
| SQLAlchemy | 2.0.50 | https://www.sqlalchemy.org | Database Abstraction Library |
| SQLAlchemy-Utils | 0.42.1 | None | Various utility functions for SQLAlchemy. |
| typing_extensions | 4.15.0 | None | Backported and Experimental Type Hints for Python 3.9+ |
| tzdata | 2026.2 | https://github.com/python/tzdata | Provider of IANA time zone data |
| tzlocal | 5.3.1 | None | tzinfo object for the local timezone |
| Unidecode | 1.4.0 | UNKNOWN | ASCII transliterations of Unicode text |
| urllib3 | 2.7.0 | None | HTTP library with thread-safe connection pooling, file post, and more. |
| vine | 5.1.0 | https://github.com/celery/vine | Python promises. |
| wcwidth | 0.8.1 | None | Measures the displayed width of unicode strings in a terminal |
| Werkzeug | 3.1.8 | None | The comprehensive WSGI web application library. |
| wheel | 0.47.0 | None | Command line tool for manipulating wheel files |
| Whoosh | 2.7.4 | http://bitbucket.org/mchaput/whoosh | Fast, pure-Python full text indexing, search, and spell checking library. |
| wrapt | 2.2.1 | None | Module for decorators, wrappers and monkey patching. |
| WTForms | 3.2.2 | None | Form validation and rendering for Python web development. |
| WTForms-SQLAlchemy | 0.4.2 | None | SQLAlchemy tools for WTForms |
| Resource | Value |
|---|---|
| User CPU time | 13.703 msec |
| System CPU time | 0.000 msec |
| Total CPU time | 13.703 msec |
| Elapsed time | 14.562 msec |
| Context switches | 4 voluntary, 0 involuntary |
| Key | Value |
|---|---|
| HTTP_ACCEPT | */* |
| HTTP_ACCEPT_ENCODING | gzip, br, zstd, deflate |
| HTTP_HOST | flaskbb--ben.eu1.ezivr.com |
| HTTP_USER_AGENT | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) |
| QUERY_STRING | |
| REMOTE_ADDR | 10.64.0.1 |
| REQUEST_METHOD | GET |
| SCRIPT_NAME | |
| SERVER_NAME | 0.0.0.0 |
| SERVER_PORT | 8000 |
| SERVER_PROTOCOL | HTTP/1.1 |
| SERVER_SOFTWARE | gunicorn/26.0.0 |
| View Function | kwargs |
|---|---|
| flaskbb.forum.views.view_post | post_id=1 |
| Variable | Value |
|---|
No SESSION data
| Variable | Value |
|---|
| Variable | Value |
|---|
| Key | Value |
|---|---|
| ADMIN_URL_PREFIX | '/admin' |
| ADMINS | ['admin@yourdomain'] |
| ALEMBIC | {'script_location': '/app/flaskbb/migrations', 'version_locations': [('portal', '/usr/local/lib/python3.12/site-packages/portal/migrations'), ('conversations', '/usr/local/lib/python3.12/site-packages/conversations/migrations')], 'file_template': '%%(year)d%%(month).2d%%(day).2d%%(hour).2d%%(minute).2d_%%(rev)s_%%(slug)s', 'path_separator': 'os'} |
| ALEMBIC_CONTEXT | {'render_as_batch': True, 'compare_server_default': True} |
| ALLOWED_HOSTS | None |
| APPLICATION_ROOT | '/' |
| AUTH_URL_PREFIX | '/auth' |
| BABEL_CONFIGURE_JINJA | True |
| BABEL_DEFAULT_LOCALE | 'en' |
| BABEL_DEFAULT_TIMEZONE | 'UTC' |
| BABEL_DOMAIN | <flaskbb.utils.translations.FlaskBBDomain object at 0x7f3a19ae3710> |
| CACHE_DEFAULT_TIMEOUT | 60 |
| CACHE_TYPE | 'SimpleCache' |
| CELERY_CONFIG | {'broker_url': 'redis://localhost:6379', 'result_backend': 'redis://localhost:6379', 'broker_transport_options': {'max_retries': 1}} |
| CONFIG_PATH | '/app/flaskbb.cfg' |
| DEBUG | True |
| DEBUG_TB_ENABLED | True |
| DEBUG_TB_HOSTS | () |
| DEBUG_TB_INTERCEPT_REDIRECTS | True |
| DEBUG_TB_PANELS | ['flask_debugtoolbar.panels.versions.VersionDebugPanel', 'flask_debugtoolbar.panels.timer.TimerDebugPanel', 'flask_debugtoolbar.panels.headers.HeaderDebugPanel', 'flask_debugtoolbar.panels.request_vars.RequestVarsDebugPanel', 'flask_debugtoolbar.panels.config_vars.ConfigVarsDebugPanel', 'flask_debugtoolbar.panels.template.TemplateDebugPanel', 'flask_debugtoolbar.panels.sqlalchemy.SQLAlchemyDebugPanel', 'flask_debugtoolbar.panels.logger.LoggingPanel', 'flask_debugtoolbar.panels.route_list.RouteListDebugPanel', 'flask_debugtoolbar.panels.profiler.ProfilerDebugPanel', 'flask_debugtoolbar_warnings.WarningsPanel'] |
| DEBUG_TB_ROUTES_HOST | None |
| DEPRECATION_LEVEL | 'default' |
| EXPLAIN_TEMPLATE_LOADING | False |
| FORUM_URL_PREFIX | '' |
| LOG_CONF_FILE | None |
| LOG_DEFAULT_CONF | {'version': 1, 'disable_existing_loggers': False, 'formatters': {'standard': {'format': '%(asctime)s %(levelname)-7s %(name)-25s %(message)s'}, 'advanced': {'format': '%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]'}}, 'handlers': {'console': {'level': 'NOTSET', 'formatter': 'standard', 'class': 'logging.StreamHandler'}, 'flaskbb': {'level': 'DEBUG', 'formatter': 'standard', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/app/logs/flaskbb.log', 'mode': 'a', 'maxBytes': 10485760, 'backupCount': 5}, 'infolog': {'level': 'INFO', 'formatter': 'standard', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/app/logs/info.log', 'mode': 'a', 'maxBytes': 10485760, 'backupCount': 5}, 'errorlog': {'level': 'ERROR', 'formatter': 'standard', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/app/logs/error.log', 'mode': 'a', 'maxBytes': 10485760, 'backupCount': 5}}, 'loggers': {'flask.app': {'handlers': ['infolog', 'errorlog'], 'level': 'INFO', 'propagate': True}, 'flaskbb': {'handlers': ['console', 'flaskbb'], 'level': 'DEBUG', 'propagate': True}}} |
| LOG_PATH | '/app/logs' |
| LOGIN_MESSAGE_CATEGORY | 'info' |
| LOGIN_VIEW | 'auth.login' |
| MAIL_DEFAULT_SENDER | ('FlaskBB Mailer', 'noreply@yourdomain') |
| MAIL_PASSWORD | '' |
| MAIL_PORT | 25 |
| MAIL_SERVER | 'localhost' |
| MAIL_USE_SSL | False |
| MAIL_USE_TLS | False |
| MAIL_USERNAME | '' |
| MAX_CONTENT_LENGTH | None |
| MAX_COOKIE_SIZE | 4093 |
| MAX_FORM_MEMORY_SIZE | 500000 |
| MAX_FORM_PARTS | 1000 |
| MESSAGE_URL_PREFIX | '/message' |
| PERMANENT_SESSION_LIFETIME | datetime.timedelta(days=31) |
| PREFERRED_URL_SCHEME | 'http' |
| PROPAGATE_EXCEPTIONS | None |
| PROVIDE_AUTOMATIC_OPTIONS | True |
| RATELIMIT_ENABLED | True |
| RATELIMIT_STORAGE_URI | 'memory://' |
| RATELIMIT_STRATEGY | 'fixed-window' |
| REAUTH_VIEW | 'auth.reauth' |
| REDIS_DATABASE | 0 |
| REDIS_ENABLED | False |
| REDIS_URL | 'redis://localhost:6379' |
| REFRESH_MESSAGE_CATEGORY | 'info' |
| REMEMBER_COOKIE_DOMAIN | None |
| REMEMBER_COOKIE_DURATION | datetime.timedelta(days=365) |
| REMEMBER_COOKIE_HTTPONLY | True |
| REMEMBER_COOKIE_NAME | 'remember_token' |
| REMEMBER_COOKIE_PATH | '/' |
| REMEMBER_COOKIE_SECURE | False |
| REMOVE_DEAD_PLUGINS | False |
| SECRET_KEY | '6041b8bafc7869d3f757a284ba26a8f1732f10b0bee4c674' |
| SECRET_KEY_FALLBACKS | None |
| SEND_FILE_MAX_AGE_DEFAULT | None |
| SEND_LOGS | False |
| SERVER_NAME | 'localhost:5000' |
| SESSION_COOKIE_DOMAIN | None |
| SESSION_COOKIE_HTTPONLY | True |
| SESSION_COOKIE_NAME | 'session' |
| SESSION_COOKIE_PARTITIONED | False |
| SESSION_COOKIE_PATH | None |
| SESSION_COOKIE_SAMESITE | None |
| SESSION_COOKIE_SECURE | False |
| SESSION_REFRESH_EACH_REQUEST | True |
| SQLALCHEMY_BINDS | {} |
| SQLALCHEMY_DATABASE_URI | 'sqlite:////app/flaskbb.sqlite' |
| SQLALCHEMY_ECHO | False |
| SQLALCHEMY_ENGINE_OPTIONS | {} |
| SQLALCHEMY_RECORD_QUERIES | False |
| SQLALCHEMY_TRACK_MODIFICATIONS | False |
| TEMPLATES_AUTO_RELOAD | None |
| TESTING | False |
| TRAP_BAD_REQUEST_ERRORS | None |
| TRAP_HTTP_EXCEPTIONS | False |
| TRUSTED_HOSTS | None |
| USE_DEFAULT_LOGGING | True |
| USE_X_SENDFILE | False |
| USER_URL_PREFIX | '/user' |
| WHOOSHEE_DIR | '/app/whoosh_index/312' |
| WHOOSHEE_MIN_STRING_LEN | 3 |
| WHOOSHEE_WRITER_TIMEOUT | 2 |
| WTF_CSRF_CHECK_DEFAULT | True |
| WTF_CSRF_ENABLED | True |
| WTF_CSRF_FIELD_NAME | 'csrf_token' |
| WTF_CSRF_HEADERS | ['X-CSRFToken', 'X-CSRF-Token'] |
| WTF_CSRF_META_NAME | 'csrf-token' |
| WTF_CSRF_METHODS | {'PUT', 'DELETE', 'POST', 'PATCH'} |
| WTF_CSRF_SECRET_KEY | 'ac251f875224cd013e8b07aadff497f700e2a942624630c5' |
| WTF_CSRF_SSL_STRICT | True |
| WTF_CSRF_TIME_LIMIT | 3600 |
| WTF_I18N_ENABLED | False |
No template rendered
The toolbar was unable to fetch the SQLAlchemy queries for this request. To enable the SQLAlchemy query display, please:
Since this app is not currently running in DEBUG mode, Flask-SQLAlchemy will not record queries by default. To enable query recording in non-debug mode, set the following configuration value:
app.config['SQLALCHEMY_RECORD_QUERIES'] = True
See the
documention of Flask-SQLAlchemy's get_debug_queries()
for additional details.
No messages logged.
| URL route | Endpoint name | HTTP methods | Is alias | Redirect to |
|---|---|---|---|---|
| / | forum.index | GET, HEAD, OPTIONS | False | None |
| /<int:forum_id>-<slug>/markread | forum.markread | OPTIONS, POST | False | None |
| /<int:forum_id>-<slug>/topic/new | forum.new_topic | GET, HEAD, OPTIONS, POST | False | None |
| /<int:forum_id>/markread | forum.markread | OPTIONS, POST | False | None |
| /<int:forum_id>/topic/new | forum.new_topic | GET, HEAD, OPTIONS, POST | False | None |
| /_themes/<themeid>/<path:filename> | _themes.static | GET, HEAD, OPTIONS | False | None |
| /admin/ | management.overview | GET, HEAD, OPTIONS | False | None |
| /admin/category/<int:category_id>/delete | management.delete_category | OPTIONS, POST | False | None |
| /admin/category/<int:category_id>/edit | management.edit_category | GET, HEAD, OPTIONS, POST | False | None |
| /admin/category/add | management.add_category | GET, HEAD, OPTIONS, POST | False | None |
| /admin/celerystatus | management.celery_status | GET, HEAD, OPTIONS | False | None |
| /admin/forums | management.forums | GET, HEAD, OPTIONS | False | None |
| /admin/forums/<int:category_id>/add | management.add_forum | GET, HEAD, OPTIONS, POST | False | None |
| /admin/forums/<int:forum_id>/delete | management.delete_forum | OPTIONS, POST | False | None |
| /admin/forums/<int:forum_id>/edit | management.edit_forum | GET, HEAD, OPTIONS, POST | False | None |
| /admin/forums/add | management.add_forum | GET, HEAD, OPTIONS, POST | False | None |
| /admin/groups | management.groups | GET, HEAD, OPTIONS | False | None |
| /admin/groups/<int:group_id>/delete | management.delete_group | OPTIONS, POST | False | None |
| /admin/groups/<int:group_id>/edit | management.edit_group | GET, HEAD, OPTIONS, POST | False | None |
| /admin/groups/add | management.add_group | GET, HEAD, OPTIONS, POST | False | None |
| /admin/groups/delete | management.delete_group | OPTIONS, POST | False | None |
| /admin/plugins | management.plugins | GET, HEAD, OPTIONS | False | None |
| /admin/plugins/<path:name>/disable | management.disable_plugin | OPTIONS, POST | False | None |
| /admin/plugins/<path:name>/enable | management.enable_plugin | OPTIONS, POST | False | None |
| /admin/plugins/<path:name>/install | management.install_plugin | OPTIONS, POST | False | None |
| /admin/plugins/<path:name>/uninstall | management.uninstall_plugin | OPTIONS, POST | False | None |
| /admin/reports | management.reports | GET, HEAD, OPTIONS | False | None |
| /admin/reports/<int:report_id>/delete | management.delete_report | OPTIONS, POST | False | None |
| /admin/reports/<int:report_id>/markread | management.report_markread | OPTIONS, POST | False | None |
| /admin/reports/delete | management.delete_report | OPTIONS, POST | False | None |
| /admin/reports/markread | management.report_markread | OPTIONS, POST | False | None |
| /admin/reports/unread | management.unread_reports | GET, HEAD, OPTIONS | False | None |
| /admin/settings | management.settings | GET, HEAD, OPTIONS, POST | False | None |
| /admin/settings/<path:slug> | management.settings | GET, HEAD, OPTIONS, POST | False | None |
| /admin/settings/plugin/<path:plugin> | management.settings | GET, HEAD, OPTIONS, POST | False | None |
| /admin/users | management.users | GET, HEAD, OPTIONS, POST | False | None |
| /admin/users/<int:user_id>/ban | management.ban_user | OPTIONS, POST | False | None |
| /admin/users/<int:user_id>/delete | management.delete_user | OPTIONS, POST | False | None |
| /admin/users/<int:user_id>/edit | management.edit_user | GET, HEAD, OPTIONS, POST | False | None |
| /admin/users/<int:user_id>/unban | management.unban_user | OPTIONS, POST | False | None |
| /admin/users/add | management.add_user | GET, HEAD, OPTIONS, POST | False | None |
| /admin/users/ban | management.ban_user | OPTIONS, POST | False | None |
| /admin/users/banned | management.banned_users | GET, HEAD, OPTIONS, POST | False | None |
| /admin/users/delete | management.delete_user | OPTIONS, POST | False | None |
| /admin/users/unban | management.unban_user | OPTIONS, POST | False | None |
| /auth/activate | auth.request_activation_token | GET, HEAD, OPTIONS, POST | False | None |
| /auth/activate/confirm | auth.activate_account | GET, HEAD, OPTIONS, POST | False | None |
| /auth/activate/confirm/<token> | auth.autoactivate_account | GET, HEAD, OPTIONS | False | None |
| /auth/login | auth.login | GET, HEAD, OPTIONS, POST | False | None |
| /auth/logout | auth.logout | GET, HEAD, OPTIONS | False | None |
| /auth/reauth | auth.reauth | GET, HEAD, OPTIONS, POST | False | None |
| /auth/register | auth.register | GET, HEAD, OPTIONS, POST | False | None |
| /auth/reset-password | auth.forgot_password | GET, HEAD, OPTIONS, POST | False | None |
| /auth/reset-password/<token> | auth.reset_password | GET, HEAD, OPTIONS, POST | False | None |
| /category/<int:category_id> | forum.view_category | GET, HEAD, OPTIONS | False | None |
| /category/<int:category_id>-<slug> | forum.view_category | GET, HEAD, OPTIONS | False | None |
| /conversations/ | conversations_bp.inbox | GET, HEAD, OPTIONS | False | None |
| /conversations/<int:conversation_id>/delete | conversations_bp.delete_conversation | OPTIONS, POST | False | None |
| /conversations/<int:conversation_id>/edit | conversations_bp.edit_conversation | GET, HEAD, OPTIONS, POST | False | None |
| /conversations/<int:conversation_id>/move | conversations_bp.move_conversation | OPTIONS, POST | False | None |
| /conversations/<int:conversation_id>/restore | conversations_bp.restore_conversation | OPTIONS, POST | False | None |
| /conversations/<int:conversation_id>/view | conversations_bp.view_conversation | GET, HEAD, OPTIONS, POST | False | None |
| /conversations/drafts | conversations_bp.drafts | GET, HEAD, OPTIONS | False | None |
| /conversations/inbox | conversations_bp.inbox | GET, HEAD, OPTIONS | False | None |
| /conversations/message/<int:message_id>/raw | conversations_bp.raw_message | GET, HEAD, OPTIONS | False | None |
| /conversations/new | conversations_bp.new_conversation | GET, HEAD, OPTIONS, POST | False | None |
| /conversations/sent | conversations_bp.sent | GET, HEAD, OPTIONS | False | None |
| /conversations/trash | conversations_bp.trash | GET, HEAD, OPTIONS | False | None |
| /forum/<int:forum_id> | forum.view_forum | GET, HEAD, OPTIONS | False | None |
| /forum/<int:forum_id>-<slug> | forum.view_forum | GET, HEAD, OPTIONS | False | None |
| /forum/<int:forum_id>-<slug>/edit | forum.manage_forum | GET, HEAD, OPTIONS, POST | False | None |
| /forum/<int:forum_id>/edit | forum.manage_forum | GET, HEAD, OPTIONS, POST | False | None |
| /markdown | forum.markdown_preview | OPTIONS, POST | False | None |
| /markdown/<path:mode> | forum.markdown_preview | OPTIONS, POST | False | None |
| /memberlist | forum.memberlist | GET, HEAD, OPTIONS, POST | False | None |
| /portal/ | portal.index | GET, HEAD, OPTIONS | False | None |
| /post/<int:post_id> | forum.view_post | GET, HEAD, OPTIONS | False | None |
| /post/<int:post_id>/delete | forum.delete_post | OPTIONS, POST | False | None |
| /post/<int:post_id>/edit | forum.edit_post | GET, HEAD, OPTIONS, POST | False | None |
| /post/<int:post_id>/hide | forum.hide_post | OPTIONS, POST | False | None |
| /post/<int:post_id>/raw | forum.raw_post | GET, HEAD, OPTIONS | False | None |
| /post/<int:post_id>/report | forum.report_post | GET, HEAD, OPTIONS, POST | False | None |
| /post/<int:post_id>/unhide | forum.unhide_post | OPTIONS, POST | False | None |
| /search | forum.search | GET, HEAD, OPTIONS, POST | False | None |
| /static/<path:filename> | static | GET, HEAD, OPTIONS | False | None |
| /topic/<int:topic_id> | forum.view_topic | GET, HEAD, OPTIONS, POST | False | None |
| /topic/<int:topic_id>-<slug> | forum.view_topic | GET, HEAD, OPTIONS, POST | False | None |
| /topic/<int:topic_id>-<slug>/delete | forum.delete_topic | OPTIONS, POST | False | None |
| /topic/<int:topic_id>-<slug>/edit | forum.edit_topic | GET, HEAD, OPTIONS, POST | False | None |
| /topic/<int:topic_id>-<slug>/hide | forum.hide_topic | OPTIONS, POST | False | None |
| /topic/<int:topic_id>-<slug>/highlight | forum.highlight_topic | OPTIONS, POST | False | None |
| /topic/<int:topic_id>-<slug>/lock | forum.lock_topic | OPTIONS, POST | False | None |
| /topic/<int:topic_id>-<slug>/post/<int:post_id>/reply | forum.reply_post | GET, HEAD, OPTIONS, POST | False | None |
| /topic/<int:topic_id>-<slug>/post/new | forum.new_post | GET, HEAD, OPTIONS, POST | False | None |
| /topic/<int:topic_id>-<slug>/trivialize | forum.trivialize_topic | OPTIONS, POST | False | None |
| /topic/<int:topic_id>-<slug>/unhide | forum.unhide_topic | OPTIONS, POST | False | None |
| /topic/<int:topic_id>-<slug>/unlock | forum.unlock_topic | OPTIONS, POST | False | None |
| /topic/<int:topic_id>/delete | forum.delete_topic | OPTIONS, POST | False | None |
| /topic/<int:topic_id>/edit | forum.edit_topic | GET, HEAD, OPTIONS, POST | False | None |
| /topic/<int:topic_id>/hide | forum.hide_topic | OPTIONS, POST | False | None |
| /topic/<int:topic_id>/highlight | forum.highlight_topic | OPTIONS, POST | False | None |
| /topic/<int:topic_id>/lock | forum.lock_topic | OPTIONS, POST | False | None |
| /topic/<int:topic_id>/post/<int:post_id>/reply | forum.reply_post | GET, HEAD, OPTIONS, POST | False | None |
| /topic/<int:topic_id>/post/new | forum.new_post | GET, HEAD, OPTIONS, POST | False | None |
| /topic/<int:topic_id>/trivialize | forum.trivialize_topic | OPTIONS, POST | False | None |
| /topic/<int:topic_id>/unhide | forum.unhide_topic | OPTIONS, POST | False | None |
| /topic/<int:topic_id>/unlock | forum.unlock_topic | OPTIONS, POST | False | None |
| /topictracker | forum.topictracker | GET, HEAD, OPTIONS, POST | False | None |
| /topictracker/<int:topic_id>-<slug>/add | forum.track_topic | OPTIONS, POST | False | None |
| /topictracker/<int:topic_id>-<slug>/delete | forum.untrack_topic | OPTIONS, POST | False | None |
| /topictracker/<int:topic_id>/add | forum.track_topic | OPTIONS, POST | False | None |
| /topictracker/<int:topic_id>/delete | forum.untrack_topic | OPTIONS, POST | False | None |
| /user/<username> | user.profile | GET, HEAD, OPTIONS | False | None |
| /user/<username>/posts | user.view_all_posts | GET, HEAD, OPTIONS | False | None |
| /user/<username>/topics | user.view_all_topics | GET, HEAD, OPTIONS | False | None |
| /user/settings/email | user.change_email | GET, HEAD, OPTIONS, POST | False | None |
| /user/settings/general | user.settings | GET, HEAD, OPTIONS, POST | False | None |
| /user/settings/password | user.change_password | GET, HEAD, OPTIONS, POST | False | None |
| /user/settings/user-details | user.change_user_details | GET, HEAD, OPTIONS, POST | False | None |
| /who-is-online | forum.who_is_online | GET, HEAD, OPTIONS | False | None |