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 |