Django জ্যাঙ্গো
  • Python Basic
  • Python OOP
  • OOP Project
  • Jupyter Notebook
  • Python MOngodb
  • Numpy
  • Pandas
  • Framework কি?
  • জ্যাঙ্গো ওয়েব ফ্রেমওয়ার্ক
  • ভার্চুয়াল এনভায়র্নমেন্ট
    • ভার্চুয়াল এনভায়র্নমেন্ট তৈরী করি :
    • জ্যাংগো ইন্সটল
  • প্রথম প্রজেক্ট শুরু
    • সেটিংস পরিচিতি
    • Template
      • load css,js
        • template load
    • create project
  • অ্যাপস কি?
    • প্রথম অ্যাপস তৈরি
  • apps কে প্রজেক্টের সাথে যুক্ত করি
  • এইচটিএমএল টেমপ্লেট নিয়ে কাজ করি
    • স্ট্যাটিক ফাইল ও টেম্পলেট
    • Hompage পরিবর্তন করি
    • বেস টেমপ্লেট বানাই
    • html টেম্পলেট কে কনভার্ট করি
    • Template Tags
    • Context Processor
  • Urls
  • urls.py এ প্যারামিটার কিভাবে কাজ করে
  • message
  • Forms
    • সাধারণ একটি ফর্ম বানাই
    • ফর্ম লে আউট পরিবর্তন
    • বুটস্ট্রাপ ফর্ম
    • মডেল ফর্ম
      • Form Customization
  • models
    • মডেল বানাই
    • মাইগ্রেশন
    • মডেল ভ্যালিডেশন করা
    • মডেল কাস্টমাইজ
  • Crud
    • image Crud Admin Panel
    • Custom Crud
      • form design bootstrap
      • search Functionality
      • menu
    • File Upload App
    • Image Crud
    • Class view Crud
  • Django Authentication
    • Login/Logout(Default)
    • Registration Page(Default )
    • Profile UpdateView (Default)
    • Change Password (Default)
    • Custom Login And Registration
    • Protecting View
  • Custom Field User Model
  • Formset
    • Page 1
    • formset Crud
  • Send Email
    • Send Email From Gmail
      • Send Email With Attachment
    • Email Verification
  • Uploading Images to Cloudinary
  • Database Connection
    • MySQL
    • postgresql
  • Django Orm
    • Basic Database Operation
      • -all()
      • - get():
      • - first() and last():
      • - filter():
      • - exclude():
      • Chaining Queries
      • Creating, Updating, and Deleting Records
      • Aggregation
      • Annotation
    • Model Relationships and Related Names
      • One-to-One Relationships
      • Many-to-One Relationships
      • Many-to-Many Relationships
      • Reverse Relationships
      • Understanding related_name
    • Advanced Querying with Django ORM
      • Chaining Queries
      • F() Expressions
      • Q() Objects
        • Dynamic Search
      • Raw SQL Queries
    • Performance Optimization with Django ORM
      • Select Related
    • Django সিগন্যাল :
  • requirement.txt
  • channels
    • Create Project
    • কনফিগার
  • Send SMS in Django
    • Configuration
  • Mysql Setup
  • অ্যাডমিন প্যানেলে
    • Site Heading And Title Change
    • মডেলকে অ্যাডমিন প্যানেলে যোগ করি
    • মডেলকে একবার সেভ করা যাবে
    • এডমিন প্যানেলে পিডিএফ এক্সপোর্ট বাটন যোগ করি
    • মডেল ফর্ম কাস্টোমাইজ করি
    • মডেলের html টেম্পলেট পরিবর্তন করি
    • ফিল্ড এর ডিজাইন বুটস্ট্রাপ ফরম্যাটে হবে
    • টেবিল বেসড ফর্মসেট এপ্লিকেশন
    • নির্দিষ্ট ইউজারকে মডেলে এক্সেস পারমিশন দেয়া
    • অ্যাডমিন প্যানেলে জাভাস্ক্রিপ্ট ও css ফাইল যোগ করা
    • fetch data
    • bill of materials
  • Django Rest Framework
    • ভার্চুয়াল এনভায়র্নমেন্ট
    • প্রজেক্ট তৈরী করি
    • মডেলকে প্রস্তুত করি
    • serializer
    • Validation
    • Api তৈরী করি (api_view)
    • Api তৈরী করি (viewsets)
    • JsonResponse তৈরি করি
    • authentication
    • Reactjs
  • প্যাকেজ নিয়ে কাজ করি
    • Tinymce Editor
    • highlight.js
    • Social Login
      • Facebook
      • Github
      • google
    • Select2
      • admin panel
    • CELERY
    • Autocomplete Show Multiple Fields
      • Autocomplete Search
  • Mongodb
    • basic models,forms,views
    • Category Crud
      • Category List
      • Create Category
      • Edit Category
      • Delete Category
      • Link Button list.html
    • Tags Crud
      • Tags List
      • Create Tags
      • Edit Tags
      • Delete Tags
      • Link Button list.html
    • Post
      • Post List
      • Create Post
        • Tinymc
      • Post Details
      • Edit Post
      • Delete Post
      • Link Button list.html
      • Search
    • Comment
      • Post Details
    • Formset Crud
      • Models.py
      • forms.py
      • views
      • urls.py
      • Author
        • author_list
        • create_author
        • Edit Author
        • Delete Author
        • Link Button
      • BookFormset
    • Rest Api
    • Image Upload
  • Redis
  • chart
  • Deployment
    • Pythonanywhere
    • Cpanel Host
  • Reactjs
Powered by GitBook
On this page
  1. অ্যাডমিন প্যানেলে

মডেলের html টেম্পলেট পরিবর্তন করি

Previousমডেল ফর্ম কাস্টোমাইজ করিNextফিল্ড এর ডিজাইন বুটস্ট্রাপ ফরম্যাটে হবে

Last updated 1 year ago

মনেকরি আমরা একটি app এ একটি মডেল বানিয়েছি এবং admin.py ফাইলের মাধ্যমে মডেলকে অ্যাডমিন প্যানেলে যোগ করেছি তাহলে তো ড্যাঙ্গ এর ডিফল্ট ডিজাইন এর টেমপ্লেট শো করবে কিন্তু আমরা তো চাই আমাদের নিজেদের html এর ডিজাইন শো করতে এজন্য আমাদের যা যা করতে হবে।

টেম্পলেট বানানো :

  • আমাদের app ফোল্ডারে templates ফোল্ডারের মধ্যে admin নামে ফোল্ডার তৈরী করি

  • admin ফোল্ডারের মধ্যে app এর নামে ফোল্ডার বানাই

  • app ফোল্ডারে মডেল এর নামে ফোল্ডার বানাই

  • মডেল ফোল্ডারে html টেম্পলেট বানাই

মনেকরি আমাদের app এর নাম salesapp আর মডেল এর নাম item তাহলে ফোল্ডার স্ট্রাকটার হবে নিচের মত

এবার মডেলকে অ্যাডমিন প্যানেলে যোগ করার সময় টেম্পলেট টি বলে দেই

from django.contrib import admin
from .models import SalesInfo
class SalesInfoAdmin(admin.ModelAdmin):
    change_form_template = 'admin/salesapp/item/change_form.html'  
admin.site.register(SalesInfo, SalesInfoAdmin)

এখন কথা হলো মনের মত যেভাবে খুশি করলে কিছু কিছু এরর শো করবে তার চেয়ে ভালো হয় django এর admin ফোল্ডারে html টেম্পলেট আছে ঐটা আমরা ওভার রাইট করবো এজন্য পাইথনের ইনস্টল ডিরেক্টরি থেকে Python\Python311-32\Lib\site-packages\django\contrib\admin\templates\admin ফোল্ডারে গেলে change_form.html নামে একটি ফাইল আছে ঐটা কপি করে আমাদের টেম্প্লেটস ফোল্ডারে পেস্ট করে এডিট করবো।

breadcrumbs

{% if not is_popup %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% translate 'Home' %}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
&rsaquo; {% if has_view_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
&rsaquo; {% if add %}{% blocktranslate with name=opts.verbose_name %}Add {{ name }}{% endblocktranslate %}{% else %}{{ original|truncatewords:"18" }}{% endif %}
</div>
{% endblock %}
{% endif %}

Add Button

{% block object-tools %}
{% if change and not is_popup %}
  <ul class="object-tools">
    {% block object-tools-items %}
      {% change_form_object_tools %}
    {% endblock %}
  </ul>
{% endif %}
{% endblock %}
  {% include "admin/includes/fieldset.html" %}

Form

<form class="row" {% if has_file_field %}enctype="multipart/form-data" {% endif %}{% if form_url %}action="{{ form_url }}" {% endif %}method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}

{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1">{% endif %}
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}">{% endif %}
{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
{% if errors %}
    <p class="errornote">
    {% blocktranslate count counter=errors|length %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktranslate %}
    </p>
    {{ adminform.form.non_field_errors }}
{% endif %}


</form>

উপরের এই কোডের জায়গায় অ্যাডমিন ফোল্ডারের include ফোল্ডার থেকে fieldset.html নামের ফাইল থেকে কোড কপি করে কাস্টমাইজ করবো

Block Field Set

{% block field_sets %}
{% for fieldset in adminform %}

  {% if fieldset.name %}<h2>{{ fieldset.name }}</h2>{% endif %}
  {% if fieldset.description %}
      <div class="description">{{ fieldset.description|safe }}</div>
  {% endif %}
  {% for line in fieldset %}
  
  
          {% if line.fields|length == 1 %}{{ line.errors }}{% else %}<div class="">{% endif %}
          {% for field in line %}

                  {% if not line.fields|length == 1 and not field.is_readonly %}{{ field.errors }}{% endif %}
                      <div class="col-md-6">
                          {% if field.is_checkbox %}
                              {{ field.field }}{{ field.label_tag }}
                          {% else %}
                              {{ field.label_tag }}
                              {% if field.is_readonly %}
                                  <div class="readonly">{{ field.contents }}</div>
                              {% else %}
                                  {{ field.field }}
                              {% endif %}
                          {% endif %}
                      </div>
                  {% if field.field.help_text %}
                      <div class="help"{% if field.field.id_for_label %} id="{{ field.field.id_for_label }}_helptext"{% endif %}>
                          <div>{{ field.field.help_text|safe }}</div>
                      </div>
                  {% endif %}

          {% endfor %}
          {% if not line.fields|length == 1 %}</div>{% endif %}

  {% endfor %}

{% endfor %}
{% endblock %}

Submit Button

{% block submit_buttons_bottom %}
    <div class="submit-row">
        <div class="row">
            <div class="col-12">
                {% if show_save %}<input type="submit" value="{% trans 'Save' %}" class="btn btn-primary"{% if show_save_as %} name="_saveasnew"{% endif %}>{% endif %}
                {% if show_save_as %}<input type="submit" value="{% trans 'Save as new' %}" class="btn btn-secondary" name="_saveasnew">{% endif %}
                {% if show_save_and_add_another %}<input type="submit" value="{% trans 'Save and add another' %}" class="btn btn-secondary" name="_addanother">{% endif %}
                {% if show_save_and_continue %}<input type="submit" value="{% trans 'Save and continue editing' %}" class="btn btn-secondary" name="_continue">{% endif %}
                <a href="{% url opts|admin_urlname:'changelist' %}" class="btn btn-secondary ms-2">{% trans "Cancel" %}</a>
            </div>
        </div>
    </div>
{% endblock %}