Daumen hoch! darüber. In einem Artikel wurde erwähnt, wie Slug in Django aussieht, aber warum sollten Sie die Slug-Funktion in Django verwenden? Wie ist es geschrieben? Es scheint keinen Artikel zu geben, der diesen Punkt erwähnt, also habe ich beschlossen, ihn zu schreiben.
Zusammenfassend lässt sich sagen, dass der Grund für die Verwendung von Slug SEO-Maßnahmen sind. Lassen Sie uns jedoch zunächst den Slug erläutern.
Im Glossar im Django-Dokument wird Slug wie folgt erklärt.
Schnecke Ein kurzes Etikett, das an ein Element angehängt ist und aus englischen Alphabeten, Zahlen, Unterstrichen und Bindestrichen besteht, die normalerweise in URLs verwendet werden. Zum Beispiel in der URL eines allgemeinen Blogeintrags:
https://www.djangoproject.com/weblog/2008/apr/12/spring/
Die Schnur (Feder) am Ende ist die Schnecke. Glossar
Ich denke, es ist in Ordnung zu erkennen, dass Sie am Ende der URL einen bestimmten Wortlaut einfügen möchten.
Da eine der offiziellen Richtlinien von Google den folgenden Titel und Wortlaut enthält: Google bevorzugt einfache URLs! Es ist auch ein Typ, der den Inhalt der Seite anhand der Adresse vorhersagen kann! Es wird empfohlen, bestimmte Regeln und URLs zu haben.
Halten Sie die URL-Struktur Ihrer Website so einfach wie möglich. Klassifizieren Sie den Inhalt so, dass Sie die URL auf logische und verständliche Weise erstellen können (wenn möglich mit aussagekräftigen Wörtern anstelle von IDs). Wenn Sie beispielsweise nach Informationen zu einem Flugzeug suchen, können Sie anhand einer URL wie "http: // en.wikipedia.org / wiki / Aviation" feststellen, ob Sie diese benötigen, indem Sie sie sich ansehen. Ich kann es schaffen
http: //www.example.com/index.php? id_sezione = 360 & sid = 3a5ebc944f
Einfache URL-Struktur beibehalten
Es gibt andere Richtlinien für SEO-Maßnahmen (ob jeder Browser unterstützt wird, ob HTTPS implementiert ist usw.), aber machen Sie als ein Element die URL einfach und klar, welche Seite Sie anzeigen. Dies ist ein wichtiger Faktor bei der Ergreifung von SEO-Maßnahmen.
Mit anderen Worten
https://www.djangoproject.com/articles/1
als,
https://www.djangoproject.com/articles/1/introduction
Man kann sagen, dass eine solche Form vorzuziehen ist.
Wenn Sie ein Blog mit Django erstellen, können Sie es als Beschreibung des Inhalts des Artikels verwenden, indem Sie einen Slug angeben, anstatt die ID des Artikels zu beenden. Da dies von Anfang an in Django integriert ist, ist es besser, es als SEO-Maßnahme zu verwenden.
Wenn Sie beispielsweise ein Modell für einen Artikel schreiben, schreiben Sie wie folgt.
models.py
from django.db import models
from django.template.defaultfilters import slugify # new
from django.urls import reverse
class Article(models.Model):
title = models.CharField(max_length=255)
body = models.TextField()
slug = models.SlugField(null=False, unique=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('article_detail', kwargs={'slug': self.slug})
def save(self, *args, **kwargs): # new
if not self.slug:
self.slug = slugify(self.title)
return super().save(*args, **kwargs)
Wie bei CharField können Sie auch max_length angeben. Dies sind 50 Zeichen, wenn max_length nicht angegeben ist. Setzen Sie Field.db_index implizit auf True.
views.py
from django.views.generic import ListView, DetailView
from .models import Article
class ArticleListView(ListView):
model = Article
template_name = 'article_list.html'
class ArticleDetailView(DetailView):
model = Article
template_name = 'article_detail.html'
urls.py
from django.urls import path
from .views import ArticleListView, ArticleDetailView
urlpatterns = [
path('<slug:slug>', ArticleDetailView.as_view(), name='article_detail'), # new
path('', ArticleListView.as_view(), name='article_list'),
]
admin.py
from django.contrib import admin
from .models import Article
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'body',)
prepopulated_fields = {'slug': ('title',)} # new
admin.site.register(Article, ArticleAdmin)
article_list.html
<h1>Articles</h1>
{% for article in object_list %}
<ul>
<li><a href="{{ article.get_absolute_url }}">{{ article.title }}</a></li>
</ul>
{% endfor %}
article_detail.html
<div>
<h2>{{ object.title }</h2>
<p>{{ object.body }}</p>
</div>
Recommended Posts