Django PimenTech Howto
Memcached
Memcached est d'après nos tests 4 fois plus rapide que le cache 'file://'. Il n'est pourtant pas utilisable directement : il faut installer le client Python que l'on peut télécharger ici : ftp://ftp.tummy.com/pub/python-memcached/ . Il s'installe de façon standard avec :
python setup.py install
Pour le backend de cache, il est possible d'utiliser des noms d'hôte à la place de l'IP qu'indique la doc officielle :
CACHE_BACKEND = 'memcached://localhost:11211'
Newforms, real life example
Template form, simple version:
<form action="." method="post">
{{ form }}
<input class="envoyer" type="submit" value="{% trans "Envoyer" %}"/><br />
</form>
Template form, expanded:
<form action="." method="post">
<label for="nom" class="required">{% trans "Nom" %}</label>{{ form.nom }}{{ form.errors.nom }}<br />
<label for="prenom" class="required">{% trans "Prénom" %}</label>{{ form.prenom }}{{ form.errors.prenom }}<br />
<label for="email" class="required">{% trans "e-mail" %}</label>{{ form.email }}{{ form.errors.email }}<br />
<label for="web">{% trans "Web" %}</label>{{ form.web }}{{ form.errors.web }}<br />
<label for="societe" class="required">{% trans "Société" %}</label>{{ form.societe }}{{ form.errors.societe }}<br />
<label for="fonction" class="required">{% trans "Fonction" %}</label> {{ form.type_fonction_id }}{{ form.errors.type_fonction_id }}<br />
<label for="telephone">{% trans "Téléphone" %}</label>{{ form.tel }}{{ form.errors.tel }}<br />
<label for="addresse">{% trans "Adresse" %}</label>{{ form.rue }}{{ form.errors.rue }}<br />
<label for="codepostal">{% trans "Code Postal" %}</label>{{ form.cp }}{{ form.errors.cp }}<br />
<label for="ville">{% trans "Ville" %}</label>{{ form.ville }}{{ form.errors.ville }}<br />
<label for="pays">{% trans "Pays" %}</label>{{ form.pays }}{{ form.errors.pays }}<br />
<input class="envoyer" type="submit" value="{% trans "Envoyer" %}"/><br />
</form>
In views.py:
class ContactForm(forms.Form):
nom = forms.CharField(required=True)
prenom = forms.CharField(required=True)
email = forms.EmailField(required=True)
web = forms.URLField()
societe = forms.CharField(required=True)
type_fonction_id = forms.ChoiceField(choices = [ (t.uid, t.nom) for t in TypeFonction.objects.exclude(uid=0) ] )
tel = forms.CharField()
rue = forms.CharField()
cp = forms.CharField()
ville = forms.CharField()
pays = forms.CharField()
def newsletter_subscription(request):
form = ContactForm(request.POST or None)
template = 'site/newsletter_subscription.html'
if form.is_valid():
contact = Contact.objects.filter(email=form.data['email'])
if contact:
contact = contact[0]
else:
# Direct model initialisation with form datas
contact = Contact(**form.clean_data)
contact.subscribe_newsletter = True
contact.save()
template = 'site/newsletter_subscription_ok.html'
return render_to_response(template,
{ 'form': form },
context_instance=RequestContext(request))
{% for field in form %}
{{ field.as_hidden }}
{% endfor %}

PDF version