Bonjour
Je développais avec Wagtail il y a quelque temps. Il n'y a pas beaucoup de documents japonais dans Wagtail, vous devez donc lire les documents en anglais.
En tant qu'ingénieur, la capacité de lire la littérature anglaise est très importante, ** J'aimerais qu'il y ait un document écrit en japonais ** Je pense que beaucoup de gens le pensent. ~~ Je pense ~~
Donc, je voudrais écrire du code en utilisant Wagtail et le sortir. Cette fois, c'est la première d'entre elles.
Je pense que certaines personnes pensent à la bergeronnette en premier lieu.
Bergeronnette est OSS de CMS développé sur la base de Django. /word15874.html). WordPress fonctionne sur PHP, tandis que Wagtail fonctionne sur Python. Comme vous pouvez le voir dans la Note de publication, le développement est assez actif.
À propos, Bergeronnette est un mot qui correspond à sekirei en japonais. Le logo Wagtail est également réalisé avec un beau motif.
Touchons-le immédiatement. Je le fais sur mac. Concernant la construction de l'environnement, je me suis référé au site suivant.
référence: Recommandation de Wagtail (1) Comparaison et examen du CMS basé sur Django et sélection de Wagtail Créer un système de blog simple avec la bergeronnette ~ Apprendre la bergeronnette ①
Accédez au CMS depuis localhost et cliquez sur le "bouton Page". Cliquez ensuite sur "AJOUTER UNE PAGE ENFANT" en haut de l'écran. Vous pouvez modifier votre blog ici.
Si vous n'avez modifié aucun code, vous ne pouvez saisir que le titre. Reportez-vous au site de référence ci-dessous et définissez-le de manière à pouvoir écrire le texte.
Référence: Personnaliser la page Wagtail
home/models.py
1 from django.db import models
2
3 from wagtail.core.models import Page
4 from wagtail.core.fields import RichTextField
5 from wagtail.admin.edit_handlers import FieldPanel
6
7
8 class HomePage(Page):
9 """
Modèle 10 pages
11 """
12 body = RichTextField(blank=True)
13 content_panels = Page.content_panels + [FieldPanel("body", classname="full"),]
Jetons un coup d'œil au code. Le code de ce modèle est Page [Inherit](https: //blog.codecamp) .jp / python-class-2) Le modèle HomePage est écrit. Ajout du corps comme RichTextField, c'est-à-dire le modèle du texte. N'oubliez pas d'ajouter FieldPanel. ~~ Il y a une personne qui a oublié ici ~~
Migrons également.
python manage.py makemigrations
python manage.py migrate
Je pense que l'écran d'affichage ressemble à ceci. ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Après avoir rempli le titre et le corps, vous pouvez enregistrer le contenu en cliquant sur l'onglet en bas de l'écran. Comme processus à ce moment-là, je vais essayer de valider le titre et le corps. Cette fois, je limiterai le nombre de caractères. ** Enregistrez le titre et le corps pour le test **
home/models.py
1 from django.db import models
2
3 from wagtail.core.models import Page
4 from wagtail.core.fields import RichTextField
5 from wagtail.admin.edit_handlers import FieldPanel
6
7
8 class HomePage(Page):
9 """
Modèle 10 pages
11 """
12 body = RichTextField(blank=True)
13 content_panels = Page.content_panels + [FieldPanel("body", classname="fu ll"),]
14
15 def save(self, *args, **kwargs):
16 """fonction de sauvegarde"""
17 print("Fonction de sauvegarde entrée")
18 breakpoint()
Remplacer la méthode de sauvegarde de django.
breakpoint()
Il s'agit d'une fonction qui appelle le débogueur PDB qui peut être utilisé en Python. Lançons-le tout de suite.
Fonction de sauvegarde entrée
--Return--
> /Users/Username/mysite/home/models.py(18)save()->None
-> breakpoint()
(Pdb) HomePage
<class 'home.models.HomePage'>
(Pdb) HomePage.objects
<django.db.models.manager.BasePageManagerFromPageQuerySet object at 0x10ebee410>
(Pdb) HomePage.objects.all()
<PageQuerySet [<HomePage: Home>, <HomePage: title>]>
(Pdb) instance = HomePage.objects.all()
(Pdb) instance
<PageQuerySet [<HomePage: Home>, <HomePage: title>]>
(Pdb) instance[1]
<HomePage: title>
(Pdb) instance[1].title
'title'
(Pdb) len(instance[1].title)
5
Vous pouvez connaître la longueur de la chaîne en utilisant la fonction len.
Lors du développement avec Django ou Wagtail, je lance le débogueur comme ceci et vérifie le contenu de l'objet. Après cela, si vous écrivez une expression conditionnelle, il semble que vous puissiez valider le nombre de caractères dans le titre.
Selon ce site "Quel est le nombre de caractères dans un titre qui est efficace dans Google SEO", le caractère du titre peut comporter jusqu'à 32 caractères environ. Ça a l'air juste. Cette fois, je voudrais le traiter de sorte qu'il ne dépasse pas 33 caractères.
home/models.py
16 def save(self, *args, **kwargs):
17 """fonction de sauvegarde"""
18 print("Fonction de sauvegarde entrée")
19 breakpoint()
20 instance = HomePage.objects.all() #J'ai oublié d'effacer
21 titleCharCount = len(self.title)
22 if ((titleCharCount < 0) | (titleCharCount > 32)):
23 #Pas validé
24 return
25 else:
26 #Validation réussie
27 return super(HomePage, self).save()
L'objet n'est pas enregistré à la ligne 24. Il est enregistré à la ligne 27. Vérifions-le à l'aide d'un débogueur. Si vous écrivez un processus similaire, le texte sera validé.
Vous n'avez pas implémenté le message d'erreur qui apparaît en haut de l'écran lorsque l'objet ne peut pas être enregistré. La prochaine fois, j'aimerais en écrire la sortie.
Recommended Posts