021-71053903 [email protected] پشتیبانی از شنبه تا چهارشنبه ساعت 9 الی 16

آموزش ساخت Sitemap در جنگو

چگونه یک نقشه سایت در جنگو ایجاد کنیم ؟

مقدمه

نقشه سایت یک فایل XML در وب سایت شما است که موتورهای جستجو برای خزیدن هوشمندانه سایت شما را می خوانند. نه تنها اطلاعاتی در مورد صفحات و فایل هایی که به نظر شما مهم هستند ارائه می دهد، بلکه همچنین بیان می کند که آخرین بار چه زمانی صفحه به روز شده است و هر چند وقت یکبار صفحه تغییر می کند.

اگر از جنگو استفاده می کنید، نقشه سایت جنگو خود را به طور خودکار با سایت ها و چارچوب های نقشه سایت ایجاد کنید.

 

برنامه سایت های جنگو را نصب کنید

env > mysite > mysite > settings.py

INSTALLED_APPS = [
    'main.apps.MainConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',    #add sites to installed apps
]

SITE_ID = 1   #define the site id

ابتدا اپلیکیشن سایت ها را نصب کنید. سپس SITE_IDدر تنظیمات آن را تعریف کنید. چارچوب سایت ها برای تعریف نام سایت در نقشه سایت استفاده خواهد شد.

 

مهاجرت ها را اجرا کنید

ترمینال macOS

(env)User-Macbook:mysite user$ python3 manage.py migrate

خط فرمان ویندوز

(env)C:\Users\Owner\desktop\env\mysite> py manage.py migrate

migrateدر خط فرمان اجرا کنید تا جدول سایت ها را به پایگاه داده اضافه کنید.

 

یک ابر کاربر ایجاد کنید

ترمینال macOS

(env)User-Macbook:mysite user$ python3 manage.py createsuperuser
Username (leave blank to use 'owner'): admin
Email address:
Password: *****
Password (again): *****
Superuser created successfully.

(env)User-Macbook:mysite user$ python3 manage.py runserver

 

خط فرمان ویندوز

(env) C:\Users\Owner\Desktop\Code\env\mysite>py manage.py createsuperuser
Username (leave blank to use 'owner'): admin
Email address: 
Password: *****
Password (again): *****
Superuser created successfully.

(env) C:\Users\Owner\Desktop\Code\env\mysite>py manage.py runserver

اگر قبلاً این کار را نکرده‌اید، یک ابرکاربر ایجاد کنید تا بتوانید به مدیریت جنگو که در پروژه شما ساخته شده است دسترسی داشته باشید.

 

وارد مدیریت جنگو شوید

django.contrib.sitesیک کنترل کننده سیگنال را ثبت می کند که یک سایت پیش فرض به نام example.com ایجاد می کند. شما باید نام و دامنه پروژه جنگو خود را با ورود به ادمین جنگو در http://127.0.0.1:8000/admin/ اصلاح کنید 

لینک Sites را پیدا کنید و روی آن کلیک کنید.

سپس نام دامنه سایت و نام نمایشی را مشاهده خواهید کرد که هر دو باید به نام وب سایت مناسب تغییر کنند.

برای توسعه، از localhost 127.0.0.1:8000 استفاده کنید. برای تولید، نام ها را به نام دامنه واقعی خود تغییر دهید.

برنامه نقشه سایت جنگو را نصب کنید

env > mysite > mysite > settings.py

INSTALLED_APPS = [
    'main.apps.MainConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sitemaps',   #add Django sitemaps to installed apps
]

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

اکنون که نام سایت را تعریف کردیم، می توانیم از چارچوب نقشه سایت جنگو استفاده کنیم.

برای نصب برنامه نقشه سایت جنگو، به را اضافه 'django.contrib.sitemaps'کنید INSTALLED_APPS. سپس به پایین پیمایش کنید تا TEMPLATES مطمئن شوید DjangoTemplatesدر لیست قرار دارد (به طور پیش فرض باید آنجا باشد) و روی APP_DIRSتنظیم شده است True.

 

یک فایل نقشه سایت جنگو ایجاد کنید

env > mysite > main > (New File) sitemaps.py

from django.contrib.sitemaps import Sitemap
from .models import Article
 
 
class ArticleSitemap(Sitemap):
    changefreq = "weekly"
    priority = 0.8
    protocol = 'http'

    def items(self):
        return Article.objects.all()

    def lastmod(self, obj):
        return obj.article_published
        
    def location(self,obj):
        return '/blog/%s' % (obj.article_slug)

ایجاد نقشه سایت جنگو شبیه به ایجاد مدل جنگو است . ابتدا یک فایل جدید به نام sitemaps.py در پوشه برنامه خود ایجاد کنید. این پوشه با models.py و views.py است.

سپس Sitemapکلاس را از django.contrib.sitemapsبالای فایل وارد کنید. همچنین مدلی را که شامل تمام مقالات/صفحه‌هایی که می‌خواهید در نقشه سایت، در این مورد، مدل وارد Articleکنید.

در مرحله بعد، یک کلاس نقشه سایت به نام ایجاد کنید ArticleSitemapکه کلاس را گسترش می دهد Sitemap.

سپس می‌توانیم صفات changefreq، priorityو و را اضافه کنیم protocol.

changefreqتعداد دفعات تغییر محتوای صفحه است. مقدار می تواند:

  • 'always'
  • 'hourly'
  • 'daily'
  • 'weekly'
  • 'monthly'
  • 'yearly'
  • 'never'

priorityاهمیت صفحات نسبت به سایر صفحات سایت شما است. مقدار می تواند از هر جایی از 0.0تا 1.0باشد.

protocolیا است 'https'یا 'http'. در این مورد، با توجه به اینکه دامنه لوکال هاست http://127.0.0.1:8000 است، از HTTP استفاده خواهیم کرد .

این items()متد فهرستی از تمام اشیاء مدلی را که می‌خواهیم در نقشه سایت جنگو فهرست شوند، برمی‌گرداند.

متد آخرین باری را برمی گرداند که lastmod()شی مدل اصلاح شده است، به این معنی که باید یک فیلد تاریخ انتشار تعریف شده مشخص شده در مدل را برگردانید تا به درستی کار کند.

در نهایت، این location()روش مکان URL مقاله را برمی گرداند. به طور پیش فرض، چارچوب نقشه سایت جنگو فراخوانی می get_absolute_url()کند.

بنابراین اگر URL مقاله شما چیزی غیر از http://127.0.0.1:8000/name-of-article است، باید متد location() را اضافه کنید و اسلاگ های مناسب فهرست شده قبل از اسلاگ مقاله را برگردانید.

طبق مثال بالا، مکان URL اکنون http://127.0.0.1:8000/blog/name-of-article است.

 

URL نقشه سایت جنگو را اضافه کنید

env > mysite > main > urls.py

from django.urls import path
from . import views
from django.contrib.sitemaps.views import sitemap
from .sitemaps import ArticleSitemap

app_name = "main"

sitemaps = {
    'blog':ArticleSitemap
}

urlpatterns = [
    path("", views.homepage, name="homepage"),
    path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),

]

آخرین کاری که برای مشاهده نقشه سایت جنگو باید انجام دهید این است که URL آن را به لیست URL های برنامه اضافه کنید. نقشه سایت و ArticleSitemapاز فایل های مناسب وارد کنید.

سپس یک فرهنگ لغت نقشه سایت جنگو را اضافه کنید که به کلاس نقشه سایت ArticleSitemap نگاشت می شود. در نهایت، الگوی URL را که به نقشه سایت جنگو اشاره می کند، اضافه کنید.

 


 

افزودن صفحات استاتیک به نقشه سایت Dynamic Django

env > mysite > main > sitemaps.py

from django.contrib.sitemaps import Sitemap
from .models import Article
from django.urls import reverse

...


class StaticSitemap(Sitemap):
    changefreq = "yearly"
    priority = 0.8
    protocol = 'https'

    def items(self):
        return ['main:homepage_view', 'main:contact_view']

    def location(self, item):
        return reverse(item)

همچنین می توانید صفحات ایستا مانند /contact یا /about را به نقشه سایت جنگو پویا خود اضافه کنید.

به فایل sitemaps.py بروید و یک تابع جدید به نام اضافه کنید StaticSitemap که کلاس را گسترش می دهد Sitemap.

changefreq، را تنظیم کنید priorityو protocolسپس items()روشی را اضافه کنید که لیستی از را برمی گرداند app_name:url_name.

سپس، reverse()روش را از URL های جنگو در بالای فایل وارد کنید.

روشی را که URL را برمی گرداند اضافه location()کنید تا تابع نقشه سایت جنگو ثابت شود.

 

توجه داشته باشید ، می‌خواهید برای نام‌های URL صحیح به فایل  اصلی > urls.py خود مراجعه کنید.

 

env > mysite > main > urls.py

from django.urls import path
from . import views
from django.contrib.sitemaps.views import sitemap
from .sitemaps import ArticleSitemap, StaticSitemap #import StaticSitemap

app_name = "main"

sitemaps = {
    'blog':ArticleSitemap,
    'static':StaticSitemap #add StaticSitemap to the dictionary
}

urlpatterns = [
    path("", views.homepage, name="homepage"),
    path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),

]

main > urls.py را برگردانید و نقشه سایت جدید را در بالای فایل وارد کنید.

سپس آن را StaticSitemapبه فرهنگ لغت نقشه سایت اضافه کنید.

 

نقشه سایت جنگو را مشاهده کنید

نقشه سایت جنگو اکنون در http://127.0.0.1:8000/sitemap.xml/ موجود است. وقتی به این دامنه می روید، باید همه URL های تعریف شده در مدل Article را به همراه ویژگی های اضافه شده در sitemaps.py فهرست کند.

محمدرضا حسنی

224 مطلب منتشر شده

دانش آموخته رشته فناوری اطلاعات / موسس پایتونی ها

درباره این مطلب نظر دهید !

مطالب پرمخاطب پایتونی ها

آموزش Markdown

آموزش Markdown

17
دقیـقه مطالعه
ادامه ...

محصولات فروش پایتونی ها

%60
تخفیف

آموزش فیگما (Figma)

30,000 تومان
2