Creat an léarscáileáinLink to this heading

Tagann Django le creat giniúna láithreáin ardleibhéil chun comhaid sitemap XML a chruthú.

ForbhreathnúLink to this heading

Is comhad XML é léarscáil an láithreán gréasáin ar do shuíomh Gréasáin a insíonn innéacsóirí inneall cuardaigh cé chomh minic a athraíonn do leathanaigh agus cé chomh tábhachtach agus atá leathanaigh áirithe maidir le leathanaigh eile ar do shuíomh. Cuidíonn an fhaisnéis seo le hinnill chuardaigh do láithreán a

Déanann creat láithreán gréasáin Django cruthú an chomhad XML seo a uathoibriú trí ligean duit an fhaisnéis seo a chur in iúl i gcód Python.

Oibríonn sé cosúil le Django: doc: creat sindication </ref/contrib/syndication>. Chun léarscáil an léarscáileáin a chruthú, scríobh a:class: ~django.contrib.sitemaps.siteMap rang agus dírigh air i d:doc: URLCon</topics/http/urls> f.

SuiteáilLink to this heading

Chun an aip léarscáileáin a shuiteáil, lean na céimeanna seo:

  1. Cuir django.contrib.sitemaps' le do shocrú: INSTALLED_APPS.

  2. Déan cinnte go bhfuil cúltaca DjangoTemplates ag do shuíomh: setting: TEMPLATES a bhfuil a roghanna APP_DIRS socraithe go True. Tá sé ann de réir réamhshocraithe, mar sin ní bheidh ort é seo a athrú ach má tá an socrú sin athraithe agat.

  3. <django.contrib.sites>Déan cinnte go bhfuil creat:mod: `sites `suiteáilte agat.

(Nóta: Ní shuiteálann an feidhmchlár léarscáileáin aon táblaí bunachar sonraí. Is é an t-aon chúis a chaithfidh sé dul chuig: setting: INSTALLED_APPS ionas gur féidir leis an lódóir teimpléad:func: ~django.template.loaders.app_directories.loader na teimpléid réamhshocraithe a aimsiú.)

TionscnamhLink to this heading

views.sitemap(request, sitemaps, section=None, template_name='sitemap.xml', content_type='application/xml')Link to this definition

Chun giniúint léarscáileán gréasáin a ghníomhachtú ar do shuíomh Django, cuir an líne seo le duit:doc: URLConf:: </topics/http/urls>

Code
from django.contrib.sitemaps.views import sitemap

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

Insíonn sé seo le Django léarscáil an léarscáileáin a thógáil nuair a fhaigheann cliant rochtain aith:file: /sitemap.xml.

Níl ainm an chomhaid léarscáileáin tábhachtach, ach tá an suíomh. Ní innéacfaidh innill chuardaigh ach naisc i do léarscáil gréasáin don leibhéal reatha URL agus thíos. Mar shampla, má tá: file: sitemap.xml ina gcónaí i d'eolaire fréimhe, féadfaidh sé tagairt a dhéanamh ar aon URL ar do shuíomh. Mar sin féin, má tá do léarscáil an léarscáileáin ina g:file: /content/sitemap.xml, ní fhéadfaidh sé tagairt a dhéanamh ach URLanna a thosaíonn la:file: /content/.

Tógann an dearcadh léarscáileáin argóint breise riachtanach: {'sitemaps': sitemaps}. Ba chóir go mbeadh sitemaps ``ina fhoclóir a mhapálann lipéad gearrchuid (m.sh., ``blognuacht) chuig a aicme:class: ~django.contrib.sitemaps.sitemap (m.sh., BlogSitemapNewsSitemap). Féadfaidh sé léarscáil freisin chuig ranga*teacht* de a:class: ~django.contrib.sitemaps.sitemap (m.sh., ``BlogSitemap (some_var) `).

Ranganna SitemapLink to this heading

A: Class: “~django.contrib.SiteMaps.SiteMap` aicme Python é rang a léiríonn “cuid” d'iontrálacha i do léarscáil an léarscáileáin. Mar shampla, d'fhéadfadh rang amháin: class: ~django.contrib.sitemaps.sitemap iontrálacha uile do bhlag a léiriú, agus d'fhéadfadh ceann eile léiriú a dhéanamh ar na himeachtaí go léir i d'fhéilire imeachtaí.

Sa chás is simplí, cuirtear na codanna seo go léir le chéile i gceann amháin: file: sitemap.xml, ach is féidir an creat a úsáid freisin chun innéacs léarscáil an léarscáileáin a ghiniúint a thagann tagairt do chomhaid léarscáileáin aonair, ceann in aghaidh an roinn. (Féach `Innéacs léarscáileáin a chruthú `_ thíos.)

Sitemap classes must subclass django.contrib.sitemaps.Sitemap. They can live anywhere in your codebase.

SamplaLink to this heading

Glacaimis leis go bhfuil córas blag agat, le samhail ``Iontrála`, agus ba mhaith leat go n-áireofaí do léarscáil an léir le d'iontrálacha blag aonair. Seo mar a d'fhéadfadh cuma ar do rang léarscáileán gréasáin:

Code
from django.contrib.sitemaps import Sitemap
from blog.models import Entry


class BlogSitemap(Sitemap):
    changefreq = "never"
    priority = 0.5

    def items(self):
        return Entry.objects.filter(is_draft=False)

    def lastmod(self, obj):
        return obj.pub_date

Nóta:

  • <changefreq><priority>:attr: ~SiteMap.ChangeFreq agus:attr: ~SiteMap.Priority tréithe aicme iad a fhreagraíonn d'eilimintí ```` agus ````, faoi seach. Is féidir iad a dhéanamh inghlaoch mar fheidhmeanna, mar: attr: ~SiteMap.LastMod a bhí sa sampla.

  • items() is a method that returns a sequence or QuerySet of objects. The objects returned will get passed to any callable methods corresponding to a sitemap property (location, lastmod, changefreq, and priority).

  • lastmod should return a datetime.

  • Níl modh: attr: ~SiteMap.location sa sampla seo, ach is féidir leat é a sholáthar d'fhonn an URL do réad a shonrú. De réir réamhshocraithe, glaonn: attr: `~SiteMap.location () ```get_absolute_url () ``ar gach réad agus filleann sé an toradh.

Tagairt aicme SitemapLink to this heading

class SitemapLink to this definition

Is féidir le rang Sitemap na modhaí/tréithe seo a leanas a shainiú:

itemsLink to this definition

Riachtanach. Modh a thugann a:term: seicheamh nó QuerySet rudaí. Níl cúram ar an gcreat cén cineál* rudaí iad; níl tábhacht ann ná go gcuirtear na rudaí seo chuig: attr: ~SiteMap.Location () `, :attr: `~SiteMap.LastMod (), :attr: ~SiteMap.ChangeFreq () `agus: attr: `~SiteMap.Priority ().

locationLink to this definition

**Roghnach. ** Modh nó tréith.

Más modh é, ba cheart dó an cosán iomlán a thabhairt ar ais do réad ar leith mar a d'fhaigh:attr: `~SiteMap.items () `.

Más tréith é, ba chóir go mbeadh a luach ina shreang a léiríonn cosán iomlán le húsáid d'*gach réad ar ais ag: attr: `~SiteMap.items () `.

Sa dá chás, ciallaíonn “cosán iomlán” URL nach bhfuil an prótacal nó an fearann san áireamh. Samplaí:

  • Go maith: '/foo/bar/'

  • Droch: `example.com/foo/bar/'

  • Droch: 'https://example.com/foo/bar/ '

Más rud é: Attr: ~SiteMap.Location ar fáil, glaóidh an creat ar an modh ``get_absolute_url () ``ar gach réad mar a chuirtear ar ais ag: attr: `~SiteMap.items () `.

Chun prótacal seachas 'http' a shonrú, bain úsáid:attr: ~SiteMap.Protocol.

lastmodLink to this definition

**Roghnach. ** Modh nó tréith.

Más modh é, ba cheart dó argóint amháin a ghlacadh - réad mar a d'fhaigh:attr: ~SiteMap.items () `- agus dáta/am modhnaithe deireanach an réada sin a thabhairt ar ais mar a:class: `~datetime.datetime.

Más tréith é, ba chóir go mbeadh a luach a:class: ~datetime.datetime a léiríonn an dáta/am a mhodhnaithe deireanach d'*gach réad ar ais ag: attr: `~SiteMap.items () `.

Má tá a:attr: ~SiteMap.lastMod ag gach mír i léarscáil an léarscáileáin, beidh ceannteideal Last-Modified ag an léarscáileán a ghineann: func: views.sitemap comhionann leis an lastmod` is déanaí. Is féidir leat an: class: ~django.middleware.http.ConditionalGetMiddleware a ghníomhachtú chun a chur ar Django freagairt go cuí d'iarratais le ceannteideal If-Modfied-Since a chuirfidh cosc ar an léarscáil an léarscáil a sheoladh mura bhfuil sé athraithe.

paginatorLink to this definition

** Roghnach. **

Tugann an maoin seo ar ais a:class: ~django.core.paginator.paginator le haghaidh: attr: `~SiteMap.items () `. Má ghineann tú léarscáileanna láithreáin i mbaisc b'fhéidir gur mhaith leat é seo a shárú mar mhaoin taisceáilte d'fhonn glaonna iolracha ``items () `a sheachaint.

changefreqLink to this definition

**Roghnach. ** Modh nó tréith.

Más modh é, ba cheart dó argóint amháin a ghlacadh - réad mar a d'fhaigh:attr: `~SiteMap.items () `- agus minicíocht athraithe an réada sin a thabhairt ar ais mar shreang.

Más tréith é, ba chóir go mbeadh a luach ina shreang a léiríonn minicíocht athraithe* gach réad ar ais ag: attr: `~SiteMap.items () `.

Is iad na luachanna féideartha le haghaidh: attr: ~SiteMap.ChangeFreq, cibé acu a úsáideann tú modh nó tréith, ná:

  • ```'i gcónaí'

  • ````uaireanta uaireanta `

  • `'laeth'

  • ````Seachtainiú'

  • ```míosúil

  • ````bliantú'`

  • `'riam

priorityLink to this definition

**Roghnach. ** Modh nó tréith.

Más modh é, ba cheart dó argóint amháin a ghlacadh - réad mar a d'fhaigh:attr: `~SiteMap.items () `- agus tosaíocht an réada sin a thabhairt ar ais mar shreang nó mar snámhphointe.

Más tréith é, ba chóir go mbeadh a luach ina shreang nó snámhphointe a léiríonn tosaíocht oir* gach réad ar ais ag: attr: `~SiteMap.items () `.

Luachanna samplacha le haghaidh: attr: ~SiteMap.Priority: 0.4, 1.0`. Is é 0.5 tosaíocht réamhshocraithe leathanaigh. Féach an doiciméadú `sitemaps.org `_ le haghaidh tuilleadh eolais.

protocolLink to this definition

** Roghnach. **

Sainmhíníonn an tréith seo prótacal ('http'https') na URLanna sa léarscáil an léarscáileáin. Mura bhfuil sé socraithe, úsáidtear an prótacal lena n-iarradh an léarscáil an léarscáileáin. Má tá an léarscáil an léarscáileáin tógtha lasmuigh de chomhthéacs iarratais, is é ``https'` an réamhshocraithe.

limitLink to this definition

** Roghnach. **

Sainmhíníonn an tréith seo an líon uasta URLanna atá san áireamh ar gach leathanach den láithreán gréasáin. < https://www.sitemaps.org/protocol.html#index>Níor chóir go mbeadh a luach níos mó ná luach réamhshocraithe 50000, is é sin an teorainn uachtarach a cheadaítear sa phrótacal `Sitemaps `_.

i18nLink to this definition

** Roghnach. **

Tréith boolean a shainmhíníonn an cheart URLanna an léarscáileáin seo a ghiniúint ag baint úsáide as do chuid uil:setting: LANGUAGES. Is é an réamhshocrú False.

languagesLink to this definition

** Roghnach. **

A: Téarma: seiche <language code>am de:téarma: cóid teanga `le húsáid chun naisc mhalartacha a ghiniúint nuair a chumasaítear: attr: `~SiteMap.I18N. Réamhshocraithe chuig: socrú: LANGUAGES.

alternatesLink to this definition

** Roghnach. **

Tréith boolean. Nuair a úsáidtear iad i gcomhar le:attr: ~SiteMap.i18n beidh liosta de naisc mhalartacha ag gach ceann acu ag díriú ar leaganacha teanga eile ag baint úsáide as an tréith hreflang `_. Is é an réamhshocrú ``False`.

x_defaultLink to this definition

** Roghnach. **

Tréith boolean. Nuair a bheidh True` beidh iontráil hreflang="x-default" le luach de:setting: LANGUAGE_CODE sna naisc malartacha a ghineann: ~SiteMap.Alternates. Is é an réamhshocrú False.

get_latest_lastmod()Link to this definition

**Roghnach. ** Modh a thugann an luach is déanaí ar ais ag: attr: ~SiteMap.LastMod. <sitemap-index-context-variables>Úsáidtear an fheidhm seo chun an tréith lastmod a chur chuig: ref: `Athróga comhthéacs innéacs Láithreáin Láithreáin `.

De réir réamhshocraithe: meth: ~SiteMap.get_Latest_LastMod tuairisceann:

  • Má tá: attr: ~SiteMap.LastMod tréith: :attr: ~SiteMap.LastMod.

  • If: Attr: ~SiteMap.LastMod is modh é: An lastmod` is déanaí ar ais tríd an modh a ghlaoch leis na míreanna go léir ar ais ag: meth: SiteMap.items.

get_languages_for_item(item)Link to this definition

**Roghnach. ** Modh a thugann seicheamh na gcód teanga ar taispeántar an mír ina leith. De réir réamhshocraithe: meth: ~SiteMap.get_Languages_for_item filleadh: attr: ~SiteMap.Languages.

AicearraíLink to this heading

Soláthraíonn creat an léarscáileáin rang áisiúlachta do chás coiteann:

class GenericSitemap(info_dict, priority=None, changefreq=None, protocol=None)Link to this definition

Ceadaíonn an rang:Class: Django.Contrib.SiteMaps.GenericSiteMap duit léarscáil an léarscáileáin a chruthú trí fhoclóir a chur air a chaithfidh iontráil queryset ar a laghad a bheith ann. Úsáidfear an tacar ceisteanna seo chun míreanna an léarscáileáin a ghiniúint. D'fhéadfadh go mbeadh iontráil date_field` aige freisin a shonraíonn réimse dáta do rudaí a aisghabhadh ón queryset. Úsáidfear é seo le haghaidh na modhanna: attr: ~SiteMap.LastMod agus:meth: ~SiteMap.Get_Latest_LastMod sa léarscáil an léarscáileáin a ghintear.

Ceadaíonn argóintí eochairfhocal:: attr: :attr: ~SiteMap.ChangeFreq, agus:attr: ~SiteMap.Protocol argóintí eochairfhocal na tréithe seo a shonrú do gach URLanna.

SamplaLink to this heading

Seo sampla de a:doc: URLConf ag baint úsáid:class: GenericSiteMap </topics/http/urls>:

Code
from django.contrib.sitemaps import GenericSitemap
from django.contrib.sitemaps.views import sitemap
from django.urls import path
from blog.models import Entry

info_dict = {
    "queryset": Entry.objects.all(),
    "date_field": "pub_date",
}

urlpatterns = [
    # some generic view using info_dict
    # ...
    # the sitemap
    path(
        "sitemap.xml",
        sitemap,
        {"sitemaps": {"blog": GenericSitemap(info_dict, priority=0.6)}},
        name="django.contrib.sitemaps.views.sitemap",
    ),
]

Láithreán Gréasáin le haghaidh radhairc statachaLink to this heading

Go minic ba mhaith leat craoltóirí inneall cuardaigh tuairimí a innéacsú nach leathanaigh mionsonraí réada ná leathanaigh cothroma iad. Is é an réiteach ainmneacha URL do na tuairimí seo a liostáil go sainráite i items agus glaoch ar: func: ~django.urls.reverse sa mhodh suíomha ar an láithreán gréasáin. Mar shampla:

Code
# sitemaps.py
from django.contrib import sitemaps
from django.urls import reverse


class StaticViewSitemap(sitemaps.Sitemap):
    priority = 0.5
    changefreq = "daily"

    def items(self):
        return ["main", "about", "license"]

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


# urls.py
from django.contrib.sitemaps.views import sitemap
from django.urls import path

from .sitemaps import StaticViewSitemap
from . import views

sitemaps = {
    "static": StaticViewSitemap,
}

urlpatterns = [
    path("", views.main, name="main"),
    path("about/", views.about, name="about"),
    path("license/", views.license, name="license"),
    # ...
    path(
        "sitemap.xml",
        sitemap,
        {"sitemaps": sitemaps},
        name="django.contrib.sitemaps.views.sitemap",
    ),
]

Innéacs léarscáil an láithreáinLink to this heading

views.index(request, sitemaps, template_name='sitemap_index.xml', content_type='application/xml', sitemap_url_name='django.contrib.sitemaps.views.sitemap')Link to this definition

Tá sé de chumas ag creat an léarscáileáin léarscáileáin innéacs léarscáileáin a chruthú a thagann tagairt do chomhaid léarscáileáin aonair, ceann in aghaidh gach roinn a shainmhínítear i do fhoclóir Is iad na difríochtaí amháin maidir le húsáid ná:

  • Úsáideann tú dhá radharc i do URLConf: :func: django.contrib.sitemaps.views.index agus:func: django.contrib.sitemaps.views.sitemap.

  • Ba chóir go dtógfadh argóint eochairfhocal section an dearcadh: django.contrib.sitemaps.views.sitemap.

Seo an chuma a bheadh ar na línte URLConf ábhartha don sampla thuas:

Code
from django.contrib.sitemaps import views

urlpatterns = [
    path(
        "sitemap.xml",
        views.index,
        {"sitemaps": sitemaps},
        name="django.contrib.sitemaps.views.index",
    ),
    path(
        "sitemap-<section>.xml",
        views.sitemap,
        {"sitemaps": sitemaps},
        name="django.contrib.sitemaps.views.sitemap",
    ),
]

Ghinfidh sé seo comhad a:file: sitemap.xml go huathoibríoch a thagann tagairt don araon: file: sitemap-flatpages.xml agus:file: sitemap-blog.xml. Ní athraíonn na ranganna: Class: ~Django.Contrib.SiteMaps.Sitemap agus an dict ``Sitemaps ``ar chor ar bith.

Má tá lastmod ag gach léarscáil láithreáin ar ais ag: meth: SiteMap.get_Latest_LastMod beidh ceannteideal `Last-Modified ag an innéacs léarscáileáin chomhionann leis an lastmod is déanaí.

Ba chóir duit comhad innéacs a chruthú má tá níos mó ná 50,000 URL ag ceann de do léarscáileanna láithreáin. Sa chás seo, déanfaidh Django an léarscáil an léarscáil uathoibríoch, agus léireoidh an t-innéacs é sin.

Mura bhfuil tú ag úsáid an radharc léarscáileáin fanaile - mar shampla, má tá sé fillte le maisitheoir caching - ní mór duit d'amharc léarscáileáin a ainmniú agus sitemap_url_name a chur chuig an amharc innéacs:

Code
from django.contrib.sitemaps import views as sitemaps_views
from django.views.decorators.cache import cache_page

urlpatterns = [
    path(
        "sitemap.xml",
        cache_page(86400)(sitemaps_views.index),
        {"sitemaps": sitemaps, "sitemap_url_name": "sitemaps"},
    ),
    path(
        "sitemap-<section>.xml",
        cache_page(86400)(sitemaps_views.sitemap),
        {"sitemaps": sitemaps},
        name="sitemaps",
    ),
]

Saincheapadh teimpléadLink to this heading

Más mian leat teimpléad difriúil a úsáid do gach léarscáil an léarscáileáin nó innéacs léarscáileáin atá ar fáil ar do shuíomh, féadfaidh tú é a shonrú trí pharaiméadar template_name a chur chuig na tuairimí sitemap agus index tríd an URLConf:

Code
from django.contrib.sitemaps import views

urlpatterns = [
    path(
        "custom-sitemap.xml",
        views.index,
        {"sitemaps": sitemaps, "template_name": "custom_sitemap.html"},
        name="django.contrib.sitemaps.views.index",
    ),
    path(
        "custom-sitemap-<section>.xml",
        views.sitemap,
        {"sitemaps": sitemaps, "template_name": "custom_sitemap.html"},
        name="django.contrib.sitemaps.views.sitemap",
    ),
]

Tugann na tuairimí seo ar ais: class: ~django.template.Response.TemplateResponse cásanna a ligeann duit na sonraí freagartha a shaincheapadh go héasca sula ndéantar iad a rindreáil. Le haghaidh tuilleadh sonraí, féach an:doc: `TemplateResponse doiciméadúcháin </ref/template-response>.

Athróga comhthéacsLink to this heading

Agus na teimpléid á shaincheapadh le haghaidh tuairimí: func: ~django.contrib.sitemaps.views.index agus:func: ~django.contrib.sitemaps.views.sitemap, is féidir leat brath ar na hathróga comhthéacs seo a leanas.

InnéacsLink to this heading

Is é an t-athróg sitemaps ``liosta de na rudaí ina bhfuil an tréith ``suíomh agus lastmod do gach ceann de na léarscáileanna láithreáin. Nochtann gach URL na tréithe seo a leanas:

  • láithreach: Suíomh (url & leathanach) an léarscáileáin.

  • lastmod: Daonraithe ag an modh: meth: ~SiteMap.get_Latest_LastMod do gach léarscáil an léarscáileáin.

Láithreán GréasáinLink to this heading

Is é an t-athróg urlset` liosta de URLanna ba chóir a bheith le feiceáil sa léarscáil an léarscáileáin. Nochtann gach URL tréithe mar a shainmhínítear san aicme:class: ~django.contrib.sitemaps.siteMap:

  • malartach

  • Changefreq

  • Míre

  • lasmod

  • suíomh

  • ``tosaíocht ``

Tá an tréith alternates ar fáil nuai:attr: ~SiteMap.I18n agus:attr: ~SiteMap.Alternates cumasaithe. Is liosta de leaganacha teanga eile é, lena n-áirítear an fillback roghnaí:attr: ~SiteMap.x_default, do gach URL. Is foclóir é gach malartach le heochracha láithreach agus lang_code.

Cuireadh an tréith earra le haghaidh gach URL chun saincheapadh níos solúbtha a cheadú ar na teimpléid, mar shampla láithreáin nuachta Google `_. Ag glacadh le Sitemap 's:attr: `~SiteMap.items () `a thabharfadh liosta míreanna a thabhairt ar ais le `publication_data ``agus réimse ``tags` rud éigin mar seo léarscáil láithreán gréasáin atá comhoiriúnach le Google News:

Xml Django
<?xml version="1.0" encoding="UTF-8"?>
<urlset
  xmlns="https://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:news="https://www.google.com/schemas/sitemap-news/0.9">
{% spaceless %}
{% for url in urlset %}
  <url>
    <loc>{{ url.location }}</loc>
    {% if url.lastmod %}<lastmod>{{ url.lastmod|date:"Y-m-d" }}</lastmod>{% endif %}
    {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}
    {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}
    <news:news>
      {% if url.item.publication_date %}<news:publication_date>{{ url.item.publication_date|date:"Y-m-d" }}</news:publication_date>{% endif %}
      {% if url.item.tags %}<news:keywords>{{ url.item.tags }}</news:keywords>{% endif %}
    </news:news>
   </url>
{% endfor %}
{% endspaceless %}
</urlset>