Il vaut mieux sauver une balle à la base de données ou de générer dynamiquement?

StackOverflow https://stackoverflow.com/questions/1548709

  •  20-09-2019
  •  | 
  •  

Question

Je travaille sur un projet django et souhaite inclure une limace à la fin de l'URL, comme cela se fait ici sur stackoverflow.com: http://example.com/object/1/my-slug-generated-from-my-title

L'ID d'objet sera utilisé pour rechercher l'élément, et non pas la limace -. Et, comme stackoverflow.com, la limace ne sera pas question du tout en obtenant le lien (juste à l'afficher)

Qestion : est-il un inconvénient (ou à l'envers) pour générer dynamiquement le bouchon, plutôt que de l'enregistrer en tant que champ de base de données réelle?

Par exemple (pas real code):

class Widget(models.Model):
    title = models.CharField()

    def _slug(self):
      return slugify(self.title)
    slug = property(_slug)

Au lieu d'utiliser un quelque chose comme un AutoSlugField ( par exemple )?

Depuis mon plan est d'avoir correspond le titre, je ne savais pas s'il était logique d'avoir un champ en double dans la base de données.

Merci!

Était-ce utile?

La solution

Si vous utilisez la limace à des fins décoratives (plutôt que de recherche), il est de générer dynamiquement la meilleure idée.

En outre, l'échantillon de code affiché peut être écrit comme ceci:

@property
def slug(self):
  return slugify(self.title)

Autres conseils

Essayez de faire une limace sur le mot "café" ou "浦 安 鉄 筋 家族".

Il y a des chances que ça va ressembler à caca, sauf si vous êtes vraiment bien préparé.

Parfois, vous avez besoin la possibilité de personnaliser les limaces.

L'inconvénient serait que vous générez automatiquement la limace chaque fois que vous rendre la page. L'avantage est que vous ne prenez pas l'espace dans la base de données avec un champ qui ne sera jamais interrogé directement contre.

De toute façon est bien, cela dépend de vos performances par rapport à des exigences d'espace.

Le principal inconvénient de générer dynamiquement les limaces est que vous manquez la possibilité de personnaliser les limaces par objet, par exemple. les rendre plus courtes et plus jolie. Pour les titres en anglais, cela peut être OK, mais pour le contenu non-anglais limaces généré peut être laid.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top