DJ Press
A blog application for Django sites, inspired by classic WordPress, available on PyPI.
Warning - very alpha.
Goals
Why build another blog engine? These are my goals...
- Simple to get started with sensible defaults: install plugin, configure
urls.py, and migrate. - Follows Django patterns: configuration in
settings.py, content management in the Django admin. - Configurable to suit a wide variety of use-cases: lots of configuration available, but not required.
- Customisable with themes: themes can be written using only template tags, no knowledge of models required.
- Customisable with plugins: simple plugins are easy to write, but complex plugins are possible.
- Powerful but lightweight: provide core functionality, allow plugins to fill gaps and enhance.
Versioning
This package uses semantic versioning, but until we reach version 1.x.x, the following rules will apply:
- MAJOR version will remain on 0 until the base functionality is complete.
- MINOR version indicates that an incompatible or breaking change has been introduced.
- PATCH version indicates a bug fix or a backward compatible change.
If you choose to use this package prior to version 1.x being released, please pin your requirements to a specific minor version, e.g. djpress~=0.31.0
Installation
- Install
djpressby adding it to your requirements file, e.g.djpress~=0.31.0(see versioning note, above). - Add it to your
INSTALLED_APPSin Django:
INSTALLED_APPS = [
# ...
"djpress.apps.DjpressConfig",
# ...
]
- Add the URLs to your project's main
urls.pyfile.
The following will set DJ Press to be available at the root of your site, e.g. https://example.com/
from django.urls import path, include
urlpatterns = [
# ...
path("", include("djpress.urls")),
# ...
]
If you want your blog to be in a subdirectory, use something like the following:
from django.urls import path, include
urlpatterns = [
# ...
path("blog/", include("djpress.urls")),
# ...
]
- Run migrations:
python3 manage.py migrate
Note that this relies on the Django Admin for content management, so ensure that you have a user with at least
staffstatus to manage content.
Configuration
In your settings.py file, create a DJPRESS_SETTINGS dictionary. Here are some common settings:
# DJPress settings
DJPRESS_SETTINGS = {
"SITE_TITLE": "My Awesome Blog",
"POST_PREFIX": "{{ year }}/{{ month }}", # blog post URLs are prefixed with "year/month": /2024/10/blog-post-slug/
}
There are lots more settings available. Please check the docs or look at the source code: src/djpress/app_settings.py
Development
Development requires PDM 2.28 or newer because the example plugin is a PDM workspace member. From the repository root:
pdm install -G :all
pdm run python example/manage.py runserver
The root library and djpress-example-plugin are installed editable into the shared environment. The Django project in
example/ is an unpackaged consumer of both, so it is run directly rather than installed as another workspace package.
Use pdm run pytest for the current environment, or pdm run nox --session test for the complete supported
Python/Django matrix. The justfile provides shortcuts for the common development, test, documentation, build, and
release commands.
Documentation
Documentation is a work-in-progress, but is available on GitHub Pages: https://stuartmaxwell.github.io/djpress
Badges
Release files for djpress 0.31.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| djpress-0.31.0.tar.gz | 130.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| djpress-0.31.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 225.0 kB
Release files / djpress-0.31.0.tar.gz
| Download URL | djpress-0.31.0.tar.gz |
|---|---|
| Size | 130.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c7ac4c468d92d095b34c6d3a91aacc3138f8b24af0a0b02051be08e476043e9d
|
|
BLAKE2b-256 checksum How to use checksums |
b9ffab93a2cf9e10fac8d8131a31bdff33ba7360e328abd40e57e0ababd876ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
pdm/2.29.0 CPython/3.14.7 Linux/6.17.0-1022-azure
|
Release files / djpress-0.31.0-py3-none-any.whl
| Download URL | djpress-0.31.0-py3-none-any.whl |
|---|---|
| Size | 94.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3543e4a06dd86170b222f2dbe9eda390b34f0472dd39b80d377391792eb8fa3d
|
|
BLAKE2b-256 checksum How to use checksums |
e1865f8f44b73756af0fe650b97706345e6d351e5ec405235ee40d09252d3085
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
pdm/2.29.0 CPython/3.14.7 Linux/6.17.0-1022-azure
|