Partie 6 - Fichiers statiques

Finalement la partie 6 du tutoriel django Ă©tait assez simple, j’avais juste besoin de redĂ©marrer le serveur. 😋

Partie 7 - Formulaire

Dans cette partie, on plonge dans les formulaires et la customisation de la vue d’administration. on y dĂ©couvre comment rajouter un champ de recherche search_fields, un filtrage sur la date list_filter, mais aussi, et le plus important : l’inlining.

Inlining

L’inlining permet de crĂ©er des sous-objets d’un objet directement dans la mĂȘme vue. Par exemple crĂ©er les rĂ©ponses Ă  une question dans le mĂȘme formulaire. pour ce faire on rajoute le champ inlines dans le ModelAdmin.

class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None, {'fields': ['question_text']}),
        ('Date Information', {'fields': ['pub_date']})
    ]
    inlines = [ChoiceInline] # <---------
    list_display = ["question_text", "pub_date", "was_published_recently"]
    list_filter = ['pub_date']
    search_fields = ['question_text']

celui-ci est lié a une classe qui lie un model avec un inline.

class ChoiceInline(admin.TabularInline):
    model = Choice
    extra = 1

Pour terminer, cette partie quatre montre aussi comment surcharger le gabarit (template) d’une vue d’administration.

Hors tuto : vues génériques

N’ayant pas tout vue des vues (haha…) j’ai dĂ©cidĂ© de pousser un peu plus loin l’apprentissage des vues gĂ©nĂ©riques.

J’y dĂ©couvre alors qu’il est possible de crĂ©er des “vues sans vue”. On dĂ©fini uniquement un pointage de urls.py vers un template HTML.

Pour accĂ©lĂ©rer le dĂ©veloppement il est Ă©galement possible d’utiliser des vues trĂšs basiques de CRUD. Voici un exemple :

from django.views import generic

class CreateView(generic.CreateView):
    model = Question
    fields = ['question_text', 'pub_date']


class EditView(generic.edit.UpdateView):
    model = Question
    fields = ['question_text']

Ces deux vues nĂ©cĂ©ssitent tout de mĂȘme la crĂ©ation d’un template dans polls/templates/polls/question_form.html.

Il est également important de noter que les autres vues génériques vont chercher un template avec un nom par défaut, sinon il faut le préciser via la propriété template_name (ex. template_name = 'polls/index.html').

Conclusion

Il me reste maintenant Ă  voir l’authentification et je devrais ĂȘtre capable de réécrire le blog en Django. đŸ’Ș