- Create App
- Configuration Admin Area
- Allowing Managing Careers Using Admin Panel
- Build Front Facing Page
- Create View
- Creating URLs
- Create HTML Template for this App
Create App
-
Type python manage.py startapp news news is an example of app name
-
Go to the file news/models.py and declare your class: import all classes we need
from django.db import models
from datetime import datetime
from django.contrib.auth.models import User
3.Declare class for Categories
class Categories(models.Model):
title = models.CharField(max_length=200)
def __str__(self):
return self.title
4.Declare class for News
5.Declare class for Comments
class Comments(models.Model):
author_name = models.CharField(max_length=200, blank = True)
author_email = models.CharField(max_length=200, blank = True)
author_site = models.CharField(max_length=200, blank = True)
comment_date = models.DateTimeField(default=datetime.now, blank = True)
comment_text = models.TextField()
comment_post = models.ForeignKey(News, on_delete=models.CASCADE)
def __str__(self):
return self.author_name
NOTICE: for correct work Pillow plugin have to be installed.
Type pip install pillow into your terminal
1.Add some piece of code to our main settings file of the project:
#Media folder settings
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
MEDIA_URL = '/media/'
2.Add some piece of code to our main urls.py file:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
Add News app to the installed app
In settings.py
'news.apps.NewsConfig',
Make Migrations
After this create the migration, make sure in the terminal you are in the right folder and pipenv shell is running then type python manage.py makemigrations news this will create the necessary python files, and run migration by typing python manage.py migrate command
Configuration Admin Area
Allowing Managing News, Categories and Comments Using Admin Panel
Open news/admin.py file and import the new models and register them under admin:
Notice: must be installedSummernote app. Detaile info how to install it you can find here https://djangocentral.com/integrating-summernote-in-django/
Build Front Facing Page
Create View
We will have three pages: with a list of all news or filtered by category, and detailed post page, so inside news/views.py we need to define three functions.
1.Bring the models
from django.shortcuts import render, get_object_or_404, redirect
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
from .models import News, Comments
2.Declare first function for main page with list of all news:
3.Declare function for page with news filtered by category:
4.Declare function for single post page:
Creating URLs
1.Create file urls.py in app folder
2.Add URL rules to this file<
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='news'),
path('', views.post, name='post'),
path('category/',views.category, name='category')
]
3.In the main app folder, oper urls.py file and include the file you created
urlpatterns = [
...
path('news/', include('news.urls')),
...
]
Create HTML Template for this App
1.Create news folder inside templates
Create index.html and news.html file inside templates/news folder
Copy html code to this file from here: