[PYTHON] Avantages de l'utilisation de slugfield dans le modèle Django

Django est bon! : détendu:

pouces vers le haut! à propos de ça. Il y avait un article qui mentionnait à quoi ressemble le slug dans Django, mais pourquoi devriez-vous utiliser la fonction slug dans Django? Comment est-il écrit? Il semble n'y avoir aucun article qui mentionne ce point, j'ai donc décidé de l'écrire.

Qu'est-ce que la limace? : Rolling_eyes:

En conclusion, la raison de l'utilisation de slug est pour les mesures de référencement, mais expliquons d'abord à propos de slug.

Dans le glossaire du document Django, slug est expliqué comme suit.

Limace Une courte étiquette attachée à un élément, composée d'alphabets anglais, de nombres, de traits de soulignement, de traits d'union, généralement utilisée dans les URL. Par exemple, dans l'URL d'une entrée de blog courante: https://www.djangoproject.com/weblog/2008/apr/12/spring/ La corde (ressort) à la fin est la limace. Glossaire

Je pense qu'il est normal de reconnaître que vous souhaitez ajouter un libellé spécifique à la fin de l'URL.

Alors, quels sont les avantages d'utiliser slug avec Django? : en pensant:

Comme l'une des directives officielles de Google a le titre et le libellé suivants, Google préfère les URL simples! C'est aussi un gars qui peut prédire le contenu de la page à partir de l'adresse! Il est recommandé d'avoir certaines règles pour et les URL.

Gardez la structure URL de votre site aussi simple que possible. Classez le contenu afin de pouvoir construire l'URL d'une manière logique et compréhensible par l'homme (en utilisant des mots significatifs au lieu d'ID lorsque cela est possible). Par exemple, si vous recherchez des informations sur un avion, une URL comme http: // en.wikipedia.org / wiki / Aviation vous dira si c'est ce dont vous avez besoin simplement en la regardant. Je peux le faire. http: //www.example.com/index.php? id_sezione = 360 & sid = 3a5ebc944f Gardez une structure d'URL simple

Il existe d'autres directives pour les mesures de référencement (si chaque navigateur est pris en charge, si HTTPS est implémenté, etc.), mais en tant qu'élément, simplifiez l'URL et clarifiez la page que vous consultez. C'est un facteur important dans la prise de mesures de référencement.

En d'autres termes https://www.djangoproject.com/articles/1 que, https://www.djangoproject.com/articles/1/introduction On peut dire qu'une telle forme est préférable.

Lorsque vous créez un blog avec Django, vous pouvez l'utiliser comme une description du contenu de l'article en fournissant un slug au lieu de terminer l'id de l'article. Comme cela est intégré à Django depuis le début, il est préférable de l'utiliser comme mesure de référencement.

Comment écrire un slug dans Django? : crayon2:

Par exemple, lorsque vous écrivez un modèle pour un article, écrivez comme suit.

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)

Comme avec CharField, vous pouvez également spécifier max_length, qui sera de 50 caractères si max_length n'est pas spécifié. Définissez implicitement Field.db_index sur 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

Avantages de l'utilisation de slugfield dans le modèle Django
Avantages d'affiner le modèle de Django
Avantages et exemples d'utilisation de Rabbit Mq
Limiter les vues à l'aide du modèle d'autorisation de Django
Modèle de reconnaissance d'image utilisant l'apprentissage profond en 2016
Somme des variables dans un modèle mathématique
Faire de n'importe quelle clé la clé primaire dans le modèle Django
Faire des inférences à l'aide du modèle entraîné de scicit-learn dans PySpark
Résumé des opérations Excel utilisant OpenPyXL en Python
[Python] Implémentation du clustering à l'aide d'un modèle gaussien mixte
Spécifier le modèle d'éclairage du matériau SCN dans Pythonista
Implémentation d'estimation la plus probable du modèle de sujet en python
Bases de l'écran d'entrée / sortie en utilisant tkinter en python3
Liste des endroits sur lesquels je suis tombé lors du téléchargement d'images à partir de Django
Modèle utilisant un réseau neuronal convolutif dans le traitement du langage naturel
Visualisation bidimensionnelle des vecteurs de documents à l'aide du modèle entraîné Word2Vec
Implémentation d'estimation bayésienne de variante du modèle de sujet en python
Mémo de connexion SSH utilisant ProxyCommand de ssh_config en Python
Modifications du modèle dans Django
Exemple d'utilisation de lambda
Implémentation de VGG16 à l'aide de Keras créé sans utiliser de modèle entraîné
Modèle de prédiction du mouvement du corps humain à l'aide d'un capteur de pièce
J'ai essayé de refactoriser le modèle CNN de TensorFlow en utilisant TF-Slim
Un mémo que j'ai écrit une fonction de base en Python en utilisant la récurrence
Créez un modèle de suivi facile à utiliser avec Django en utilisant ManyToManyField via