rustango 0.27.9

Django-shaped batteries-included web framework for Rust: ORM + migrations + auto-admin + multi-tenancy + audit log + auth (sessions, JWT, OAuth2/OIDC, HMAC) + APIs (ViewSet, OpenAPI auto-derive, JSON:API) + jobs (in-mem + Postgres) + email + media (S3 / R2 / B2 / MinIO + presigned uploads + collections + tags) + production middleware (CSRF, CSP, rate-limiting, compression, idempotency, etc.).
Documentation
{% extends "base.html" %}
{% block title %}{{ title }} — rustango admin{% endblock title %}
{% block body %}
<nav class="breadcrumb" aria-label="breadcrumb">
  <ol>
    <li><a href="{{ admin_prefix }}/">{{ admin_title }}</a></li>
    <li><a href="{{ admin_prefix }}/{{ model.table }}">{{ model.name }}</a></li>
    {% if edit_pk %}<li><a href="{{ admin_prefix }}/{{ model.table }}/{{ edit_pk }}">#{{ edit_pk }}</a></li>{% endif %}
    <li><strong>{{ title }}</strong></li>
  </ol>
</nav>
<h1>{{ title }}</h1>
{% if error %}
<p class="error">{{ error }}</p>
{% endif %}
<form method="post" action="{{ action }}">
{% for set in fieldsets %}
  <fieldset class="form-fieldset">
    {% if set.title %}<legend>{{ set.title }}</legend>{% endif %}
    <table>
    {% for row in set.rows %}
      <tr>
        <th><label for="{{ row.label }}">{{ row.label }}{{ row.extra | safe }}</label></th>
        <td>{{ row.input | safe }}</td>
      </tr>
    {% endfor %}
    </table>
  </fieldset>
{% endfor %}
  <p><button type="submit">Save</button></p>
</form>
{% endblock body %}