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:
Cuir
django.contrib.sitemaps'le do shocrú: INSTALLED_APPS.Déan cinnte go bhfuil cúltaca
DjangoTemplatesag do shuíomh: setting: TEMPLATES a bhfuil a roghannaAPP_DIRSsocraithe goTrue. Tá sé ann de réir réamhshocraithe, mar sin ní bheidh ort é seo a athrú ach má tá an socrú sin athraithe agat.<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>
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., ``blog nó nuacht) chuig a aicme:class: ~django.contrib.sitemaps.sitemap (m.sh., BlogSitemap nó NewsSitemap). 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:
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 orQuerySetof objects. The objects returned will get passed to any callable methods corresponding to a sitemap property (location,lastmod,changefreq, andpriority).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
Sitemapna modhaí/tréithe seo a leanas a shainiú:- itemsLink to this definition
Riachtanach. Modh a thugann a:term: seicheamh nó
QuerySetrudaí. 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-Modifiedag 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 ceannteidealIf-Modfied-Sincea 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á:
- 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.5tosaí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'nó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
lastmoda 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
querysetar 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 ónqueryset. Ú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>:
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:
# 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
sectionan dearcadh: django.contrib.sitemaps.views.sitemap.
Seo an chuma a bheadh ar na línte URLConf ábhartha don sampla thuas:
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:
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:
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:
malartachChangefreqMírelasmodsuí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 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>