জ্যাঙ্গো অ্যাডমিন হেডারে কীভাবে একজন 'জাঙ্গো প্রশাসন' পাঠ্য পরিবর্তন করতে পারেন?
এটি "অ্যাডমিনকে অনুকূলিতকরণ" ডকুমেন্টেশনে আচ্ছাদিত বলে মনে হচ্ছে না।
জ্যাঙ্গো অ্যাডমিন হেডারে কীভাবে একজন 'জাঙ্গো প্রশাসন' পাঠ্য পরিবর্তন করতে পারেন?
এটি "অ্যাডমিনকে অনুকূলিতকরণ" ডকুমেন্টেশনে আচ্ছাদিত বলে মনে হচ্ছে না।
উত্তর:
আপডেট : আপনি জ্যাঙ্গো 1.7+ ব্যবহার করছেন তবে নীচের উত্তরটি দেখুন ।
২০১১ সালের আসল উত্তর:
এটি করতে আপনার নিজের অ্যাডমিন base_site.html
টেম্পলেট তৈরি করতে হবে। সবচেয়ে সহজ উপায় ফাইলটি তৈরি করা:
/<projectdir>/templates/admin/base_site.html
আপনার কাস্টম শিরোনামটি বাদ দিয়ে এটি আসলটিরbase_site.html
অনুলিপি হওয়া উচিত :
{% block branding %}
<h1 id="site-name">{% trans 'my cool admin console' %}</h1>
{% endblock %}
এটি কাজ করার জন্য আপনার প্রকল্পের সঠিক সেটিংস থাকা দরকার settings.py
:
/projectdir/templates/
যুক্ত হয়েছে TEMPLATE_DIRS
।django.template.loaders.filesystem.Loader
যুক্ত হয়েছে TEMPLATE_LOADERS
।{% extends "admin/base.html" %}
মধ্যে /<projectdir>/templates/admin/base_site.html
, এবং কেবল ব্লক (গুলি) আপনার যা দরকার, অর্থাৎ পুনরায় সংজ্ঞায়িত {% block branding %}...{% endblock %}
।
TEMPLATE_LOADER
সেটিংসটি যোগ করবেন না তখনও উপরেরগুলি কাজ করে। দেখে TEMPLATE_DIR
মনে হচ্ছে যথেষ্ট
জ্যাঙ্গো ১.7 হিসাবে আপনার টেমপ্লেটগুলি ওভাররাইড করার দরকার নেই। আপনি এখন বাস্তবায়ন করতে পারে site_header , site_title
এবং index_title
একটি কাস্টম উপর বৈশিষ্ট্যাবলী AdminSite অর্ডার সহজে অ্যাডমিন সাইটের শিরোনামটি এবং হেডার টেক্সট পরিবর্তন হবে। একটি অ্যাডমিনসাইট সাবক্লাস তৈরি করুন এবং আপনার দৃষ্টান্তটি আপনার ইউআরএলকনফে আবদ্ধ করুন:
admin.py:
from django.contrib.admin import AdminSite
from django.utils.translation import ugettext_lazy
class MyAdminSite(AdminSite):
# Text to put at the end of each page's <title>.
site_title = ugettext_lazy('My site admin')
# Text to put in each page's <h1> (and above login form).
site_header = ugettext_lazy('My administration')
# Text to put at the top of the admin index page.
index_title = ugettext_lazy('Site administration')
admin_site = MyAdminSite()
urls.py:
from django.conf.urls import patterns, include
from myproject.admin import admin_site
urlpatterns = patterns('',
(r'^myadmin/', include(admin_site.urls)),
)
আপডেট : অক্সফেন দ্বারা চিহ্নিত হিসাবে আপনি কেবল সাবক্লাসিং ছাড়াই site_header
আপনার urls.py
বা admin.py
সরাসরি সেট করতে পারেন AdminSite
:
admin.site.site_header = 'My administration'
admin_site
আপনাকে নতুন মডেলগুলি নিবন্ধিত করতে হবে। পছন্দadmin_site.register(MyModel, ModelAdmin)
admin/base_site.html
টেমপ্লেটের উপর নির্ভর করে যেমন পাসওয়ার্ড_সেট) তবে extra_context
ইউআরএলগুলিতেও ব্যবহার করা উচিত: উদাহরণস্বরূপurl(r'^password_reset/$', auth_views.password_reset, name='admin_password_reset', kwargs={'extra_context': {'site_header': "My administration"}})
admin.site.site_header
কনফিগারেশনটি app*/admin.py
কার্যকর হবে?
অ্যাডমিন সাইট শিরোলেখ সেট করার একটি সহজ উপায় রয়েছে - এটি বর্তমান প্রশাসনিক উদাহরণকে এর urls.py
মতো নির্ধারণ করুন
admin.site.site_header = 'My admin'
অথবা কেউ পৃথক পদ্ধতিতে কিছু শিরোনাম-নির্মাণের যাদু বাস্তবায়ন করতে পারে
admin.site.site_header = get_admin_header()
সুতরাং, সাধারণ ক্ষেত্রে সাবক্লাসের দরকার নেই AdminSite
admin.site.site_title = 'My site admin'
।
urls.py
:from django.contrib import admin
AdminSite
এটিকে কাজ করার চেষ্টা করার জন্য একটি সময় সাবক্লাস করেছি এবং ব্যয় করেছি autodiscover()
তবে শেষ পর্যন্ত নিজেরাই এই সমাধানটি নিয়ে ভাবলাম। আমার প্রকৃতপক্ষে আমার ওভাররাইডটি রয়েছে admin.py
, যা আমি মনে করি যে এটি পরিষ্কার কারণ যেহেতু এটি অন্যান্য অ্যাডমিন-সম্পর্কিত যুক্তির সাথে রাখা হয়েছে
ইন urls.py
আপনি 3 সবচেয়ে গুরুত্বপূর্ণ ভেরিয়েবল ওভাররাইড করতে পারেন:
from django.contrib import admin
admin.site.site_header = 'My project' # default: "Django Administration"
admin.site.index_title = 'Features area' # default: "Site administration"
admin.site.site_title = 'HTML title from adminsitration' # default: "Django site admin"
তথ্যসূত্র: এই বৈশিষ্ট্যগুলিতে জাজানো ডকুমেন্টেশন ।
এই প্রশ্নের উত্তরের ভিত্তিতে জাজানো ১.৮.৩ এ একটি সাধারণ সম্পূর্ণ সমাধান।
ইন settings.py
অ্যাড:
ADMIN_SITE_HEADER = "My shiny new administration"
ইন urls.py
অ্যাড:
from django.conf import settings
admin.site.site_header = settings.ADMIN_SITE_HEADER
admin.py
। আপনার যদি ইতিমধ্যে এটি না থাকে তবে কেবল এটি তৈরি করুন এবং যুক্ত করতে ভুলবেন না from django.contrib import admin
।
ADMIN_SITE_HEADER
, কেবল এখানে কেবল urls.py
এটি করার সহজতম উপায় আপনার কাছে নিশ্চিত হয়ে নিন
from django.contrib import admin
এবং তারপরে এগুলি কেবল url.py
আপনার মূল অ্যাপ্লিকেশনটির নীচে যুক্ত করুন
admin.site.site_title = "Your App Title"
admin.site.site_header = "Your App Admin"
জাজানো ২.১.১ এর জন্য নিম্নলিখিত লাইনগুলি যুক্ত করুন urls.py
from django.contrib import admin
# Admin Site Config
admin.sites.AdminSite.site_header = 'My site admin header'
admin.sites.AdminSite.site_title = 'My site admin title'
admin.sites.AdminSite.index_title = 'My site admin index'
আপনি যেমন টেমপ্লেটগুলিতে দেখতে পাচ্ছেন , পাঠ্যটি স্থানীয়করণের কাঠামোর মাধ্যমে সরবরাহ করা হয়েছে ( trans
টেমপ্লেটের ট্যাগ ব্যবহারের জন্য নোট করুন )। আপনি টেমপ্লেটগুলির নিজের অনুলিপি তৈরি না করেই পাঠ্যটিকে ওভাররাইড করতে অনুবাদ ফাইলগুলিতে পরিবর্তন করতে পারেন।
mkdir locale
./manage.py makemessages
locale/en/LC_MESSAGES/django.po
এই লাইনগুলি যুক্ত করে সম্পাদনা করুন :
msgid "Django site admin"
msgstr "MySite site admin"
msgid "Django administration"
msgstr "MySite administration"
./manage.py compilemessages
Https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files দেখুন
admin.py:
from django.contrib.admin import AdminSite
AdminSite.site_title = ugettext_lazy('My Admin')
AdminSite.site_header = ugettext_lazy('My Administration')
AdminSite.index_title = ugettext_lazy('DATA BASE ADMINISTRATION')
from django.utils.translation import ugettext_lazy
এই লাইন যুক্ত করতে ভুলবেন না।
প্রথমত, আপনার প্রকল্পে টেমপ্লেট / অ্যাডমিন / বেস_সাইটেল html যুক্ত করা উচিত। এই ফাইলটি নিরাপদে ওভাররাইট করা যেতে পারে যেহেতু এটি এমন একটি ফাইল যা জ্যাঙ্গো ডেভস আপনার অ্যাডমিন সাইটটিকে কিছুটা কাস্টমাইজ করার সঠিক উদ্দেশ্যে তৈরি করেছে। ফাইলটিতে কী রাখবেন তার একটি উদাহরণ এখানে দেওয়া হয়েছে:
{% extends "admin/base.html" %}
{% load i18n %}
{% block title %}{{ title }} | {% trans 'Some Organisation' %}{% endblock %}
{% block branding %}
<style type="text/css">
#header
{
/* your style here */
}
</style>
<h1 id="site-name">{% trans 'Organisation Website' %}</h1>
{% endblock %}
{% block nav-global %}{% endblock %}
এটি সাধারণ অনুশীলন। তবে আমি লক্ষ্য করেছিলাম যে এর পরেও আমি প্রধান অ্যাডমিন সূচী পৃষ্ঠায় একটি বিরক্তিকর "সাইট প্রশাসন" রেখে এসেছি। এবং এই স্ট্রিংটি কোনও টেম্পলেটগুলির মধ্যে ছিল না, বরং অ্যাডমিন ভিউয়ের ভিতরে সেট করা হয়েছিল। ভাগ্যক্রমে এটি পরিবর্তন করা বেশ সহজ। আপনার ভাষাটি ইংরাজীতে সেট করা আছে ধরে নেওয়া, আপনার প্রকল্প ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডগুলি চালনা করুন:
$ mkdir locale
$ ./manage.py makemessages -l en
এখন লোকেল / এন / এলসি_মেসেজ / জাজানো.পি ফাইলটি খুলুন এবং শিরোনামের তথ্যের পরে দুটি লাইন যুক্ত করুন (এই উদাহরণের শেষ দুটি লাইন)
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-03 03:25+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Site administration"
msgstr "Main administration index"
এর পরে, নিম্নলিখিত কমান্ডটি চালনা এবং আপনার প্রকল্পের সার্ভারটি পুনরায় লোড করতে মনে রাখবেন:
$ ./manage.py compilemessages
উত্স: http://overtag.dk/wordpress/2010/04/changing-the-django-admin-site-title/
জাজানো ২.০ থেকে আপনি কেবলমাত্র একটি লাইন যুক্ত করতে পারেন url.py
এবং নামটি পরিবর্তন করতে পারেন।
# url.py
from django.contrib import admin
admin.site.site_header = "My Admin Central" # Add this
জ্যাঙ্গোর পুরানো সংস্করণগুলির জন্য । (<1.11 এবং তার আগের) আপনাকে সম্পাদনা করতে হবেadmin/base_site.html
এই লাইনটি পরিবর্তন করুন
{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
প্রতি
{% block title %}{{ title }} | {{ site_title|default:_('Your Site name Admin Central') }}{% endblock %}
আপনি নিজের django
সংস্করণটি পরীক্ষা করে দেখতে পারেন
django-admin --version
কেবল প্রশাসক.পি ফাইল এ যান এবং এই লাইনটি ফাইলটিতে যুক্ত করুন:
admin.site.site_header = "My Administration"
এই কাজের জন্য আপনার কোনও টেম্পলেট পরিবর্তন করার দরকার নেই আপনার কেবলমাত্র settings.py
আপনার প্রকল্পের আপডেট আপডেট করতে হবে । নীচে যান এবং এটি settings.py
সংজ্ঞায়িত করুন।
admin.site.site_header = 'My Site Admin'
এইভাবে আপনি জাজানো প্রশাসকের হেডারটি পরিবর্তন করতে সক্ষম হবেন। এছাড়াও আপনি নীচের লিঙ্কে জ্যাঙ্গো অ্যাডমিন কাস্টমাইজেশন এবং সেটিংস সম্পর্কে আরও পড়তে পারেন।
আপনি AdminSite.site_header
এই পাঠ্যটি পরিবর্তন করতে ব্যবহার করতে পারেন । এখানে ডক্স রয়েছে
এটি করার জন্য দুটি পদ্ধতি রয়েছে:
1] ওভাররাইড base_site.html
করে django/contrib/admin/templates/admin/base_site.html
: নীচের বিষয়বস্তু হল base_site.html
:
{% extends "admin/base.html" %}
{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>
{% endblock %}
{% block nav-global %}{% endblock %}
উপরের কোড স্নিপেটে সাইট_শিরোনাম এবং সাইট_হেডার সম্পাদনা করুন। এই পদ্ধতিটি কাজ করে তবে এটি স্থিতিশীল পরিবর্তনের কারণে এটি সুপারিশযোগ্য নয়।
2] urls.py
প্রকল্পের ডিরেক্টরিতে নিম্নলিখিত লাইনগুলি যুক্ত করে :
admin.site.site_header = "AppHeader"
admin.site.site_title = "AppTitle"
admin.site.index_title = "IndexTitle"
এই পদ্ধতিটি একটি হিসাবে সুপারিশ করা হয় যেহেতু আমরা কোনও সাইট সম্পাদনা ছাড়াই সাইট শিরোনাম, সাইট শিরোনাম এবং সূচি-শিরোনাম পরিবর্তন করতে পারি base_site.html
।
আপনি কেবলমাত্র admin/base_site.html
টেমপ্লেটটি ওভাররাইড করুন (টেমপ্লেটটি অনুলিপি করুন django.contrib.admin.templates
এবং আপনার নিজের অ্যাডমিন টেম্পলেট ডায়ারে রেখেছেন) এবং branding
ব্লকটি প্রতিস্থাপন করুন ।