Skip to main content

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 to AUTH_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:

  1. Have a Date or DateTime field (matching the name in settings).
  2. 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.html
  • templates/django_cs_archive/archive_month.html
  • templates/django_cs_archive/archive_day.html
  • templates/django_cs_archive/archive_detail.html

License

MIT License.

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

django_cs_archive-0.1.0.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_cs_archive-0.1.0-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

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

Hashes for django_cs_archive-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1ecde804470d574a0fd1f6ffb4ed34090c13102c0b42b694ef8258ab8bacd914
MD5 e8514f9243c9627adc71f13b96efaaad
BLAKE2b-256 ce1fd3d5c95a20ffd3df9b358d121dcb74aaff77772ef281248d93bdc8c6e332

See more details on using hashes here.

File details

Details for the file django_cs_archive-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_cs_archive-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4e8d6927c4401c65c1425ad3bcbdbbea540f8f289596fe51f73a666c0595b794
MD5 e62b957275600811390ee24a3f9126b3
BLAKE2b-256 074ec977e3576315e8ae9a0afbbc637a844d77e64a5cbb90f5aa9e9f16177166

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page