Reusable Django models, utils and storages
Project description
DjangoEssentials
DjangoEssentials is a Python library designed to streamline and enhance the development process of Django applications. It offers a collection of commonly used Django models and deployment settings, encapsulating repetitive patterns and configurations into a reusable package. The library is intended to evolve with contributions from the community, making it a collaborative project.
Features
- TimeBasedStampModel: An abstract model providing time-based fields for tracking creation, update, and deletion times of model instances.
- MyS3Storage: A custom storage class for Django, facilitating integration with Amazon S3 for media storage, with features such as non-overwriting of files with the same name and public read access by default.
Getting Started
Below are instructions on how to install DjangoEssentials and examples of how to use its features in your Django projects.
Installation
Install DjangoEssentials using pip:
pip install DjangoEssentials
Usage
- TimeBasedStampModel
Inherit from TimeBasedStampModel to add automatic creation, update, and soft deletion timestamps to your models.
from django.db import models
from djangoessentials import TimeBasedStampModel
class YourModel(TimeBasedStampModel):
name = models.CharField(max_length=255)
# Add your fields here
- MyS3Storage
Configure your Django project to use MyS3Storage for handling media files with Amazon S3. Example:
# settings.py
USE_S3 = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.2/howto/static-files/
if USE_S3:
# aws settings
AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID") ## get your aws access key
AWS_SECRET_ACCESS_KEY = os.getenv("AWS_SECRET_ACCESS_KEY") ## get your aws secret access key
AWS_STORAGE_BUCKET_NAME = os.getenv("AWS_STORAGE_BUCKET_NAME") ## Your bucket name
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'
AWS_S3_OBJECT_PARAMETERS = {'CacheControl': 'max-age=86400'}
# s3 public media settings
PUBLIC_MEDIA_LOCATION = 'media'
MEDIA_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/{PUBLIC_MEDIA_LOCATION}/'
else:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static/'),
]
Than
from django.db import models
from djangoessentials import MyS3Storage
class MyModel(models.Model):
document = models.FileField(upload_to='documents/', storage=MyS3Storage)
# Add your fields here
- CustomUser Model Usages:
#settings.py
AUTH_USER_MODEL = 'yourapp.CustomUser'
#example
from django import forms
from djangoessentials import CustomUser
class YourModelForm(forms.ModelForm):
password1 = forms.CharField()
password2 = forms.CharField()
class Meta:
model = CustomUser
fields = ('username', 'phone_number', 'date_of_birth')
Advanced Usage
DjangoEssentials aims to provide more utilities and helpers over time, driven by community contributions and the evolving needs of Django developers.
Contributing
We welcome contributions from the community, whether it's adding new features, improving documentation, or reporting bugs. Please follow these steps to contribute:
Fork the repository.
- Create your feature branch (git checkout -b feature/AmazingFeature).
- Commit your changes (git commit -am 'Add some AmazingFeature').
- Push to the branch (git push origin feature/AmazingFeature).
- Open a Pull Request.
Contact
For questions or additional information, please reach out to codermungan@gmail.com
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
File details
Details for the file DjangoEssentials-0.1.9.tar.gz
.
File metadata
- Download URL: DjangoEssentials-0.1.9.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3fb51bda42e2baf23464cfd523ff15fdb435cc86af5b3966554b42319c303ca7 |
|
MD5 | 0f800c54d1c3543a41bc04ac0e2b3901 |
|
BLAKE2b-256 | 2f4d78a3047b9cdf0bc314e73aeb0a7c1827f37da6d21fc308a218151f165e79 |
File details
Details for the file DjangoEssentials-0.1.9-py3-none-any.whl
.
File metadata
- Download URL: DjangoEssentials-0.1.9-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d75df7bb1d05bcf1faee1365822b97c6fa2290da0d99abe72ae19d8c65b507fd |
|
MD5 | 293ffad386399035b88c9250ea2c16a8 |
|
BLAKE2b-256 | 3a35852d229fd83355c8d883f9580d94e652f9367b0f9e3727ba261506157e5b |