বাংলায় জ্যাঙ্গো

Base html ব্যাবহার করা

লক্ষ করুন, আমাদের পোষ্ট লিষ্ট পেজ এর চেহারা আর পোষ্ট Detail পেজ এর চেহারা আলাদা । এভাবে প্রতিটা পেজ এ স্টাইল দিতে প্রত্যেক পেজের জন্য আলাদা কোড লিখতে হবে। এবং প্রতিটা পেজেই কিছু কোড বার বার লিখতে হবে। এই কাজ এড়ানোর জন্য আমরা একটি পদ্ধতি অবলম্বন করবো।

 

banglai-django-base-html

banglai-django-base-html

লক্ষ করুন, banglai-django.com সাইটের প্রতিটা পোষ্ট detail পেজের লাল অংশ পরিবর্তন হয় না। শুধু সবুজ অংশ পরিবর্তন হচ্ছে । এই কাজ করার জন্য আমরা একটি মূল html পেজ ( যেমন: base.html) তেরী করব। পেজের সকল কাঠামো, স্টাইল এই পেজেই থাকবে। শুধু যেই অংশ পরিবর্তন হবে সেই অংশ গুলোর ব্লক তেরী করব। অন্য পেজ তেরী করার সময়( index.html/ all_post.html) বলব , মূল পেজ (base.html) থেকে সব কিছু নাও এবং ব্লক এর মধ্যে আমাদের নতুন পোষ্ট প্রবেশ করাও।

tempates/ এর মধ্যে base.html তেরী করি।

<html>
   <head>
   {% load staticfiles %}
      <link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">
      <script src="{% static 'js/bootstrap.min.js' %}"></script>
      <link rel="stylesheet" href="{% static 'style.css' %}">
   </head>
   <body>
      <div class="container">
         <div class="page-header page-header-custom">
            <h1 class="text-center">বাঙলায় জ্যাঙ্গো </h1>
         </div>
      <div class="jumbotron">
         <h2>সকল পোষ্ট তালিকা </h2>
         {% block content %}
         {% endblock %}
      </div>
      </div>
    </body>
</html>

templates/post_list.html পরিবর্তন করি।

{% extends 'base.html' %}
{% block content %}
      {% for post in post_list %}
         <h3><a href="{% url 'single-post' post.pk %}">{{ post.title }}</a></h3>
      {% endfor %}
{% endblock %}

আমরা base.html এর content ব্লক এর মধ্যে আমাদের পোষ্ট লিষ্ট এর কোড প্রবেশ করালাম। এভাবে অন্য পেজের কোড ও পরিবর্তন করি।

templates/single_post.html

{% extends 'base.html' %}
   {% block content %}
      <h2>{{ post.title }}</h2>
      <p>{{ post.description }}</p>
   {% endblock %}

templates/index.html

{% extends 'base.html' %}
   {% block content %}
      {% for post in all_post_list %}
         <h3>{{ post.title }}</h3>
         <hr>
         <p>{{ post.description }}</p>
      {% endfor %}
   {% endblock %}

urls.py কে ক্লিন করি

আমরা আমাদের সকল url কে মূল url.py এর মধ্যে (banglaidj/urls.py) রেখেছি।কিন্তু আমরা যখন অনেকগুলো app তৈরী করব তখন সব url এখানে রাখলে ওনেক খারাপ চেহারা তৈরী হবে। তাই প্রত্যেক app এর url তার নিজস্ব url.py এর মধ্যে রাখব ।

blog_post এপ এর মধ্যে urls.py নামে একটি নতুন ফাইল তৈরী করি। ফাইলে যোগ করি

from django.conf.urls import url

urlpatterns = [

]

banglaidj/urls.py থেকে home, post-list, single-post নামের url কে cut করে blog_post/urls.py এর urlpatterns paste করি।

#blog_post/urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    path('home/', views.home, name='home'),
    path('post-list/', views.post_list, name='post-list'),
    path('single-post/<post_id>/', views.single_post, name='single-post')
]

আমাদের বর্তমান url কে banglaidj/urls.py এর মধ্যে include করি।

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog_post.urls'), name='home'),

]

এখন আমাদের url হবে নিম্নরুপ

http://127.0.0.1:8000/blog/home/

http://127.0.0.1:8000/blog/post-list/

http://127.0.0.1:8000/blog/single-post/1

আগের পোষ্ট                                                                                       পরের পোষ্ট

Leave a Reply

Your email address will not be published. Required fields are marked *