Williano / django-bona-blog

A Django blog app with features of a standard blogging platform.
https://pypi.org/project/django-bona-blog/
MIT License
176 stars 65 forks source link
django django-app django-blog django-blog-app django-blogging python3

django-bona-blog

A Django blog app with features of a standard blogging platform.

PyPI version GitHub license GitHub stars GitHub forks GitHub issues

Table of contents

General info

An Open-Source Django blogging app like Medium and Real Python. It has features of a standard blogging platform.

Standalone Project

There is a standalone version of this django package. You can get it from its GitHub Repo.

Screenshots

Authors Dashboard Page :-------------------------: Screenshot_2020-06-25 Bona Dashboard Home

Create Article Page :-------------------------: Screenshot_2020-06-26 Bona Dashboard Create Article(2)

Authors Profile Details Page :-------------------------: Screenshot_2020-06-25 Bona Dashboard Profile Details

Home Page List of Categories Page
Home Categories List
Category Articles List Page Author Articles List Page
Category Article List Author Articles

Article Detail Page :-------------------------: Screenshot_2020-11-22 BONA Django CKEditor installation Testing

Features

Technologies

Setup

To run this app, you will need to follow these 3 steps:

1. Requirements

2. Install Python and Pipenv

3. Local Setup and Running on Windows, Linux and Mac OS

a. Install package with pip or pipenv
  ```
      $ pip install django-bona-blog

  ```

               or 
  ```
      $ pipenv install django-bona-blog

  ```             
b. Add django_filter, ckeditor, taggit, crispy_forms and rest_framework to your INSTALLED_APPS in settings.py:
    INSTALLED_APPS = (
        ...
            'django_filters',
            'rest_framework',
            'taggit',
            'ckeditor',
            'ckeditor_uploader',
            'crispy_forms',
    )
c. Add CKEditor Configuration to settings.py:
    # CKEditor Settings
    CKEDITOR_UPLOAD_PATH = 'uploads/'
    CKEDITOR_IMAGE_BACKEND = "pillow"

    CKEDITOR_CONFIGS = {
        'default':
            {'toolbar': 'full',
             'width': 'auto',
             'extraPlugins': ','.join([
                 'codesnippet',
                 'youtube'
             ]),
             },
    }
d. Add blog to INSTALLED_APPS in settings.py for your Django project:
    INSTALLED_APPS = (
        ...
        'blog.apps.BlogConfig',
    )
e. Add blog.urls, tinmyce.urls and api.urls to urls.py of your project:

    from django.urls import include

    urlpatterns = [
      ...
      path('ckeditor/', include('ckeditor_uploader.urls')),
      path('blog/', include('blog.urls')),
      path('api/v1/', include('blog.api.v1.routers.routers')), 
  ]
f. Add configuration to serve static files in development to urls.py of your project:
     from django.conf.urls.static import static
     from django.conf import settings

     if settings.DEBUG:
        urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
g. Create blog database tables
    $ python manage.py migrate blog
h. Add dashboard configuration to your project settings.py:
    # Account Settings
      LOGIN_URL = '/account/login/'
      LOGIN_REDIRECT_URL = '/author/dashboard/'
      LOGOUT_REDIRECT_URL = '/account/logout/'
i. Add email configuration for account signup and password reset
    # Email Settings (Development)
      EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

   # Email Settings (Production)
     EMAIL_BACKEND = ''
     EMAIL_HOST = ''
     EMAIL_HOST_USER = ''
     EMAIL_HOST_PASSWORD = ""
     EMAIL_PORT = 587
     EMAIL_USE_TLS = True
j. Add static files configuration for serving staticfiles

      STATICFILES_DIRS = [ os.path.join(BASE_DIR, "blog/static"),]
      STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
      STATICFILES_FINDERS = [
            "django.contrib.staticfiles.finders.FileSystemFinder",
            "django.contrib.staticfiles.finders.AppDirectoriesFinder",
         ]
k. Add media files configuration for serving media files
        # Media files (User uploaded images)
        MEDIA_URL = '/media/'
        MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
l. Collect static files
     $ python manage.py collectstatic
Running Tests
      $ python manage.py test blog.tests

Status

Project is: done

Contact

Created by Williano - feel free to contact me!

License

You can check out the full license here

This project is licensed under the terms of the MIT license.

Contributing

  1. Fork it (https://github.com/Williano/django-bona-blog.git)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin feature/fooBar)
  5. Create a new Pull Request