http://lists.afpy.org/listinfo/nantes pour participer aux discussions concernant l'organisation des meetups.http://nantes.afpy.org.La plateforme de développement Web pour les perfectionnistes sous pression.
— www.django-fr.org
Simplicity should be a key goal in design and unnecessary complexity should be avoided.
Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
La documentation précise certaines conventions de codage spécifiques à Django. La PEP 8 fait référence pour le reste.
L'architecture de Django s'inspire du principe MVC (Model, View, Controller) ou plutôt MTV (Model, Template, View) :
La fonction correspondant au controller est assumée par l'URL dispatcher qui permet de faire correspondre des URLs sous forme d'expressions régulières à des vues.
$ virtualenv --no-site-packages venv_mushroomproject
$ source venv_mushroomproject/bin/activate
$ pip install django==1.6
$ django-admin.py startproject mushroomproject
$ cd mushroomproject
$ ./manage.py runserver
├── mushroomproject
│ ├── manage.py
│ └── mushroomproject
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
/mushroomproject : conteneur du projet (le nom est sans importance)/manage.py : utilitaire en ligne de commande permettant différentes actions sur le projet/mushroomproject/mushroomproject : paquet Python effectif du projet/mushroomproject/settings.py : réglages et configuration du projet/mushroomproject/urls.py : déclaration des URLs du projet/mushroomproject/wsgi.py : point d'entrée pour déployer le projet avec WSGIUne application est un module métier Web qui fait quelque chose – par exemple un système de blog, une base de données publique ou une application de sondage.
$ ./manage.py startapp mushrooms
# settings.py
INSTALLED_APPS = (
'django.contrib.admin',
...
'mushrooms')
├── mushrooms
│ ├── admin.py
│ ├── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
models.py : déclaration des modèles de l'applicationviews.py : écriture des vues de l'applicationadmin.py : comportement de l'application dans l'interface d'administrationtests.py : Il. Faut. Tester.# mushrooms/models.py
from django.db import models
class MushroomSpot(models.Model):
specy = models.CharField(max_length=100)
location = models.CharField(max_length=200)
discovery = models.DateField(blank=True, null=True)
famous = models.BooleanField(default=False)
picture = models.FileField(upload_to='pictures')
class Meta:
db_table = 'mushroom_spot'
verbose_name = 'Mushroom spot'
verbose_name_plural = 'Mushroom spots'
ordering = ('-discovery', )
def __str__(self):
return '{}/{}'.format(self.specy, self.location)
$ ./manage.py syncdb
# mushrooms/admin.py
from django.contrib import admin
from mushrooms.models import MushroomSpot
admin.site.register(MushroomSpot)
# mushrooms/views.py
from django.shortcuts import render
from mushrooms.models import MushroomSpot
def mushroom_spot_list(request):
# Requête via l'ORM
mushroom_spots = MushroomSpot.objects.filter(
discovery__year=2014,
famous=False)
# Variables passées au template
context = {
'mushroom_spots': mushroom_spots
}
return render(
request,
'mushrooms/mushroom_spot_list.html',
context
)
{# mushrooms/templates/mushrooms/mushroom_spot_list.html #}
<h1>Liste des coins à champignons</h1>
{% if mushroom_spots %}
<ul>
{% for spot in mushroom_spots %}
<li>{{ spot }}</li>
{% endfor %}
</ul>
{% else %}
<p>Aucun coin :( !</p>
{% endif %}
# mushrooms/urls.py
from django.conf.urls import patterns, url
urlpatterns = patterns('',
...
url(r'^mushroom_spot/list/$',
'mushrooms.views.mushroom_spot_list',
name='mushroom_spot_list'),
...
)
south : migration de schéma et de données de base de donnéesdjango_extensions : Extensions et outils d'administration pratiquesdjango_debug_toolbar : une barre latérale permettant de faire du debug et du profiling page par pagefactory_boy : création de grappes de données pour les testsdjango_jenkins : intégration à Jenkinsdjango_compressor : compression des fichiers statiquesdjango_floppyforms : mise en forme de formulairesdjango_linaration_pagination : affichage de listes paginéesdjango_sorting : affichage de tableaux triablesdjango_breadcrumbs : création de fil d'arianedjango_xworkflows : gestion de workflowsdjango_modeltranslation : gestion de modèles multilingueseasy_thumbnails : gestion de miniatures pour les imagesdjango_tinymce : intégration d'un widget TinyMCEUn répertoire de modules : https://www.djangopackages.com
@__fle__ ou @PythonNantes| Table of contents | t |
|---|---|
| Exposé | ESC |
| Autoscale | e |
| Full screen slides | f |
| Presenter view | p |
| Source files | s |
| Slide numbers | n |
| Blank screen | b |
| Notes | 2 |
| Help | h |