মডিউল ৭-৮ঃ ফ্রন্ট-এন্ডে পোস্ট দেখানো
এই মডিউলে আমরা দেখব Post মডেলের ডেটাগুলো কিভাব ফ্রন্ট-এন্ডে দেখতে পারি
templates ডিরেকটরিতে home.html ফাইলটি তৈরি করি যেখানে Post এর ডেটাগুলো দেখানো হবে-
Code:: 7.8.1 templates\home.html
{% extends 'base.html' %} {% block content %}
<div class="d-flex flex-wrap justify-content-center px-5 pt-5">
{% for post in data %}
<div class="col-sm-3">
<div class="card m-2">
<div class="card-body">
<h5 class="card-title">{{post.title}}</h5>
<p class="card-text">{{post.content}}</p>
<p>Author : {{post.author.name}}</p>
<p>
Category : {% for cat in post.category.all %}
<button class="btn btn-primary btn-sm m-2" disabled >{{cat.name}} </button>
{% endfor %}
</p>
<a href="{% url 'edit_post' post.id %}" class="btn btn-warning">Edit</a>
<a href="{% url 'delete_post' post.id %}" class="btn btn-danger">Delete</a>
</div>
</div>
</div>
{% endfor %}
</div>
{% endblock %}
১২ নং লাইনে for লুপ লেখার কারন হলো একটি পোষ্টে একাধিক Category থাকতে পারে ( One to Many Relationship)
blog_project/urls.py-এ Post ডেটা দেখানোর জনা 'homepage' নামে নতুন একটি URL-প্যাটার্ন এ্যাড করি-
Code:: 7.8.2 blog_project/urls.py
from django.contrib import admin
from django.urls import path, include
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.home, name='homepage'),
path('author/', include('author.urls')),
path('profile/', include('profiles.urls')),
path('post/', include('posts.urls')),
path('category/', include('categories.urls')),
]
নতুন URL-প্যাটার্নটির জন্য blog_project এ views.py ফাইল ক্রিয়েট করে একটি view ফাংশন লিখে ফেলি-
Code:: 7.8.3 blog_project/views.py
from django.shortcuts import render
from posts.models import Post
def home(request):
data = Post.objects.all()
# print(data)
# for i in data:
# print(i.title)
# for j in i.category.all():
# print(j)
# print()
return render(request, 'home.html', {'data' : data})
এখন, base.html ফাইলের বেশ কিছু লিঙ্ক পরিবর্তন করে নিচের মত করে লিখি -
Code:: 7.8.4 templates/base.html
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Bootstrap CSS -->
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"
crossorigin="anonymous"
/>
<title>Phitron Blog</title>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="{% url 'homepage' %}">P Blog</a>
<button
class="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="{% url 'homepage' %}">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'add_author' %}">Add Author</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'add_category' %}">Add Category</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'add_post' %}">Add Post</a>
</li>
</ul>
<form class="d-flex">
<input
class="form-control me-2"
type="search"
placeholder="Search"
aria-label="Search"
/>
<button class="btn btn-outline-success" type="submit">
Search
</button>
</form>
</div>
</div>
</nav>
{% block content %}
{% endblock %}
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
crossorigin="anonymous"
></script>
</body>
</html>
এখন প্রজেক্ট রান করে http://127.0.0.1:8000/ URL-এ গেলে অথবা Home বাটনে ক্লিক করলে Post মডেলের রেকর্ডগুলো দেখতে পারব-

Last updated