A versatile Django toolkit for generating reports from various backends
Project description
Django REST Report
A versatile Django toolkit for managing reports.
JasperReports
Easily generate JasperReports from your Django views using the JasperReports Server REST API. This package handles authentication, URL construction, and maps Django responses to the correct file types automatically.
🛠 Prerequisites
Before using this package, you must have a JasperReports Server instance running.
You can host it yourself or use a cloud instance.
Ensure the REST API is accessible (typically at port 8080).
🚀 Installation
pip install djangorestreport
⚙️ Setup
Add your JasperServer credentials to your Django settings.py.
# settings.py
JASPER_SERVER_URL = "http://server-ip:8080"
JASPER_USER = "username"
JASPER_PASSWORD = "password"
You can also load these values from environment variables if that matches your project setup.
📄 Supported Formats
Pass these strings into the fmt parameter to receive the corresponding file type:
Documents: pdf, docx, rtf, odt, html, xml
Spreadsheets: xlsx, xls, csv, ods
Presentations: pptx
📖 Usage
Basic Example (DRF View)
In your views.py, you can extract query parameters from the URL and pass them directly to your Jasper report.
from rest_report import JasperReport
from rest_framework.views import APIView
from rest_framework.response import Response
class ReportView(APIView):
def get(self, request):
report = JasperReport()
# 1. Path to the report unit in your JasperServer repository
report_path = "/organization/reports/NameofReport"
# 2. Get all query params (e.g., ?id=5&status=active)
params = request.query_params.dict()
# 3. Extract the format (default to 'pdf')
fmt = params.pop("fmt", "pdf")
# 4. Generate and return the report as a file download
try:
return report.generate(report_path, fmt=fmt, params=params)
except Exception as e:
return Response({"error": str(e)}, status=400)
Extended Example (DRF View)
In your views.py, you can set a custom filename and message, then pass them directly to your Jasper report.
from rest_report import JasperReport
from rest_framework.views import APIView
from rest_framework.response import Response
class ReportView(APIView):
def get(self, request):
report = JasperReport()
report_path = "/organization/reports/SalesOverview"
# Extract format and parameters
params = request.query_params.dict()
fmt = params.pop("fmt", "pdf")
try:
return report.generate(
report_path,
fmt=fmt,
params=params,
filename="Monthly_Sales_Report", # 1. Custom Filename
message="Report generated successfully for User ID 101" # 2. Custom Message
)
except Exception as e:
return Response({"error": str(e)}, status=400)
💡 Working with Parameters
The params dictionary keys must exactly match the parameter names defined in your .jrxml file. For example, if you pass {"id": 10}, your Jasper report should have a parameter defined as $P{id}.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file djangorestreport-0.0.3.tar.gz.
File metadata
- Download URL: djangorestreport-0.0.3.tar.gz
- Upload date:
- Size: 4.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
796182458c98bd9b81c27b0ee891a0cf20f4b95eb4d1b05573ba9cfd3f1521cc
|
|
| MD5 |
22456ea63c2049991cee3fdef6bbadac
|
|
| BLAKE2b-256 |
c5186f4eb302f7bafc8704c3e8901fd4dde915704607ad415416d1f5a5bac213
|
Provenance
The following attestation bundles were made for djangorestreport-0.0.3.tar.gz:
Publisher:
python-publish.yml on chinmayroy/djangorestreport
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
djangorestreport-0.0.3.tar.gz -
Subject digest:
796182458c98bd9b81c27b0ee891a0cf20f4b95eb4d1b05573ba9cfd3f1521cc - Sigstore transparency entry: 927320799
- Sigstore integration time:
-
Permalink:
chinmayroy/djangorestreport@b9f65df9bfd9d8bc084efe00bacf01d78b127abe -
Branch / Tag:
refs/tags/v0.0.3 - Owner: https://github.com/chinmayroy
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@b9f65df9bfd9d8bc084efe00bacf01d78b127abe -
Trigger Event:
release
-
Statement type:
File details
Details for the file djangorestreport-0.0.3-py3-none-any.whl.
File metadata
- Download URL: djangorestreport-0.0.3-py3-none-any.whl
- Upload date:
- Size: 4.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f4d06836614cf0636d36fe85c9277067b4e8e2cd20851c095dcb65d2da9747e
|
|
| MD5 |
70c4568bc60cdb17a04ec31eea3c863f
|
|
| BLAKE2b-256 |
11b3199b241ef378c801e23514646925a39f5fb7fd81fd6c1851a5370872a683
|
Provenance
The following attestation bundles were made for djangorestreport-0.0.3-py3-none-any.whl:
Publisher:
python-publish.yml on chinmayroy/djangorestreport
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
djangorestreport-0.0.3-py3-none-any.whl -
Subject digest:
4f4d06836614cf0636d36fe85c9277067b4e8e2cd20851c095dcb65d2da9747e - Sigstore transparency entry: 927320801
- Sigstore integration time:
-
Permalink:
chinmayroy/djangorestreport@b9f65df9bfd9d8bc084efe00bacf01d78b127abe -
Branch / Tag:
refs/tags/v0.0.3 - Owner: https://github.com/chinmayroy
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@b9f65df9bfd9d8bc084efe00bacf01d78b127abe -
Trigger Event:
release
-
Statement type: