[PYTHON] Vorteile der Verwendung von Slugfield im Django-Modell

Django ist gut! : entspannt:

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.

Was ist Schnecke? : Augen rollen:

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.

Was sind die Vorteile der Verwendung von Slug mit Django? : Denken:

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.

Wie schreibe ich eine Schnecke in Django? : bleistift2:

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

Vorteile der Verwendung von Slugfield im Django-Modell
Vorteile der Verfeinerung des Django-Modells
Vorteile und Beispiele für die Verwendung von Rabbit Mq
Beschränken Sie Ansichten mithilfe des Berechtigungsmodells von Django
Bilderkennungsmodell mit Deep Learning im Jahr 2016
Summe der Variablen in einem mathematischen Modell
Machen Sie einen beliebigen Schlüssel zum Primärschlüssel im Django-Modell
Machen Sie Schlussfolgerungen mit dem trainierten Modell des Scicit-Learn in PySpark
Zusammenfassung der Excel-Operationen mit OpenPyXL in Python
[Python] Implementierung von Clustering mit einem gemischten Gaußschen Modell
Geben Sie das Beleuchtungsmodell für SCN-Material in Pythonista an
Höchstwahrscheinlich Schätzungsimplementierung des Themenmodells in Python
Grundlagen des Eingabe- / Ausgabebildschirms mit tkinter in python3
Liste der Orte, auf die ich beim Hochladen von Bildern aus Django gestoßen bin
Modell unter Verwendung eines Faltungsnetzwerks in der Verarbeitung natürlicher Sprache
Zweidimensionale Visualisierung von Dokumentvektoren mit einem von Word2Vec trainierten Modell
Implementierung der Bayes'schen Varianzschätzung des Themenmodells in Python
Ssh-Verbindungsnotiz mit ProxyCommand von ssh_config in Python
Modelländerungen in Django
Beispiel für die Verwendung von Lambda
Implementierung von VGG16 mit Keras, die ohne Verwendung eines trainierten Modells erstellt wurden
Vorhersagemodell der Bewegung des menschlichen Körpers unter Verwendung eines Münzsensors
Ich habe versucht, das CNN-Modell von TensorFlow mit TF-Slim umzugestalten
Ein Memo, dass ich eine Grundfunktion in Python mit Wiederholung geschrieben habe
Erstellen Sie mit Django ein benutzerfreundliches Folgemodell mit ManyToManyField through