Django aplikazioetarako New York Times estiloko data-artxibo sistema konfiguragarria.
Project description
django-cs-archive
A New York Times-style date-based archiving system (YYYY/MM/DD) for Django applications.
This package wraps Django's powerful generic date views into a plug-and-play solution. It follows the "Convention over Configuration" philosophy: just add a few lines to your settings.py, and you're ready to go.
Features
- 📅 Full Hierarchy: Year, Month, Day, and Detail (Slug) views.
- ⚙️ Centralized Configuration: Managed via
settings.py, similar toAUTH_USER_MODEL. - 🔌 Plug-and-play: No need to write complex views or URL patterns manually.
- 🐍 Compatibility: Supports Django 3.2+.
Installation
Install via pip:
pip install django-cs-archive
Configuration
This is the most important part. Follow these three simple steps:
1. settings.py
Add the app to your installed apps and define which model you want to archive.
INSTALLED_APPS = [
# ... other apps
'django_cs_archive',
]
# REQUIRED: The model to be managed by the archive
# Format: 'app_label.ModelName'
CS_ARCHIVE_MODEL = 'blog.Article'
# OPTIONAL: The name of the date/datetime field in your model
# Defaults to 'publish_date' if not set.
CS_ARCHIVE_DATE_FIELD = 'pub_date'
2. urls.py
Include the archive URLs in your project's main URL configuration. You can choose any prefix you like (e.g., news/, archive/, blog/).
from django.urls import path, include
urlpatterns = [
# ...
path('news/', include('django_cs_archive.urls')),
]
3. Prepare your Model (models.py)
Your model (defined in CS_ARCHIVE_MODEL) must satisfy at least two requirements:
- Have a Date or DateTime field (matching the name in settings).
- Have a Slug field (named
slug) to generate unique URLs.
It is highly recommended to add the get_absolute_url method to easily generate links in your templates:
from django.db import models
from django.urls import reverse
class Article(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(unique_for_date='pub_date') # Important for data integrity
pub_date = models.DateTimeField()
content = models.TextField()
def get_absolute_url(self):
# Generate the URL using django-cs-archive namespace
return reverse('django_cs_archive:detail', kwargs={
'year': self.pub_date.year,
'month': self.pub_date.strftime('%m'),
'day': self.pub_date.strftime('%d'),
'slug': self.slug,
})
Usage
Once configured, the following URLs will be automatically available (assuming you used the news/ prefix):
/news/2024/-> All articles from 2024./news/2024/03/-> All articles from March 2024./news/2024/03/15/-> All articles from that specific day./news/2024/03/15/my-article-slug/-> The full article detail view.
In Templates
Use the django_cs_archive namespace to generate links:
<!-- Link to a specific article -->
<a href="{{ article.get_absolute_url }}">Read more</a>
<!-- Link to the yearly archive -->
<a href="{% url 'django_cs_archive:year' year=2024 %}">2024 Archive</a>
Customization (Templates)
The package looks for standard Django templates. To customize the look and feel, create the following files in your project's templates directory:
templates/django_cs_archive/archive_year.htmltemplates/django_cs_archive/archive_month.htmltemplates/django_cs_archive/archive_day.htmltemplates/django_cs_archive/archive_detail.html
License
MIT License.
Project details
Release history Release notifications | RSS feed
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 django_cs_archive-0.1.0.tar.gz.
File metadata
- Download URL: django_cs_archive-0.1.0.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ecde804470d574a0fd1f6ffb4ed34090c13102c0b42b694ef8258ab8bacd914
|
|
| MD5 |
e8514f9243c9627adc71f13b96efaaad
|
|
| BLAKE2b-256 |
ce1fd3d5c95a20ffd3df9b358d121dcb74aaff77772ef281248d93bdc8c6e332
|
File details
Details for the file django_cs_archive-0.1.0-py3-none-any.whl.
File metadata
- Download URL: django_cs_archive-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e8d6927c4401c65c1425ad3bcbdbbea540f8f289596fe51f73a666c0595b794
|
|
| MD5 |
e62b957275600811390ee24a3f9126b3
|
|
| BLAKE2b-256 |
074ec977e3576315e8ae9a0afbbc637a844d77e64a5cbb90f5aa9e9f16177166
|