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. đȘ