Modifier la police d'affichage de votre CMS ou de votre site Internet

Que l'on uti­lise un sys­tème de ges­tion de contenu (CMS) tel que Word­Press, Dru­pal, Spip, Dot­clear, etc. ou que l'on monte soi-même ses pages Inter­net, la typo­gra­phie uti­li­sée a tou­jours son impor­tance. D'ailleurs, on peut remar­quer qu'il s'agit très sou­vent des quelques mêmes polices qui sont uti­li­sées par l'écrasante majo­rité des sites Web (je ne parle pas, bien sûr, des sites uti­li­sant un alpha­bet dif­fé­rent du nôtre qui dis­posent de leurs propres polices) : ??les familles Tre­bu­chet, Tre­bu­chet MS, Tahoma, Lucida Grande, Lucida Sans Uni­code, Arial et Ver­dana de la faille géné­rique sans-serif.

La large uti­li­sa­tion de ces polices pro­vient d'un pro­jet de Micro­soft appelé « Core fonts for the Web » ini­tié en 1996 et visant à stan­dar­di­ser l'utilisation des polices de carac­tères sur Inter­net, avec des familles de polices répon­dant à trois cri­tères importants :

  • être faci­le­ment lisibles sur un écran
  • offrir une large gamme de carac­tères avec un nombre de familles de polices restreint
  • sup­por­ter une inter­na­li­sa­tion exhaustive

Trois cri­tères effec­ti­ve­ment très impor­tants pour assu­rer une lisi­bi­lité opti­male et une large compatibilité.

De nos jours, il existe plu­sieurs solu­tions pour for­cer l'utilisation d'une police don­née sur son site Web. Il est par ailleurs pos­sible dans tout navi­ga­teur Inter­net digne de ce nom de choi­sir une police locale pour affi­cher tout site Inter­net ne fai­sant pas men­tion expli­cite de la police qu'il uti­lise, mais ce n'est pas ce qui nous inté­resse ici.

Le nombre de sites Web uti­li­sant une police disons inha­bi­tuelle va crois­sant. On peut d'ailleurs remar­quer que cer­tains font de mau­vais choix, ren­dant la lec­ture et même par­fois la navi­ga­tion vec­trices de sérieux maux de tête : ce n'est pas parce qu'une police est jolie qu'elle est lisible, et selon la méthode uti­li­sée le navi­ga­teur de l'utilisateur qui vient se bala­der sur votre site peut ne pas l'afficher correctement.

Com­ment uti­li­ser une police don­née de façon à ce que ça marche pour tous les uti­li­sa­teurs (ou presque) alors ? Eh bien, il existe prin­ci­pa­le­ment deux méthodes :

– la méthode cufón : basée sur Javascript/JSON, je dirais que son plus gros avan­tage est aussi son plus gros incon­vé­nient, car elle repose sur Javas­cript. D'un côté, cela assure une très grande com­pa­ti­bi­lité avec les dif­fé­rents navi­ga­teurs, d'un autre côté il est bien évident qu'il faut que le navi­ga­teur sup­porte le Javas­cript pour qu'elle fonc­tionne. Or, bien que cela soit le cas par défaut dans la grande majo­rité des cas, on peut très bien avoir envie ou besoin de désac­ti­ver cette fonc­tion­na­lité inté­grée et là, adieu le sup­port des polices ! Par ailleurs, selon le type de police uti­lisé, le nombre de glyphes voulu, etc. on peut vite se retrou­ver avec un script assez lourd à char­ger. Ce n'est pas la méthode que je vais abor­der ici.

– la méthode CSS : là, pas de Javas­cript, il s'agit de spé­ci­fier dans ses feuilles de style la faille de police à uti­li­ser. Seule contrainte : il faut lier la police à son site, que ce soit loca­le­ment ou en uti­li­sant un réper­toire de polices dis­po­nible sur Inter­net. Cette méthode, qui est selon moi celle à pri­vi­lé­gier est plus légère, plus simple à mettre ne place et plus flexible que la pré­cé­dente. Par contre, d'aucuns navi­ga­teurs peu civi­li­sés se font un malin plai­sir de mal inter­pré­ter cer­taines pro­prié­tés CSS, voire de les zap­per pure­ment et sim­ple­ment (sui­vez mon regard…). Mal­gré cela, et parce que c'est au navi­ga­teur de s'adapter à Inter­net et pas l'inverse, voici com­ment spé­ci­fier l'utilisation d'une police de carac­tères don­née dans votre CMS ou sur votre site :

Sur beau­coup de CMS, le thème uti­lisé peut per­mettre de spé­ci­fier une police par­ti­cu­lière. Par exemple, il en va ainsi du thème Suf­fu­sion que j'utilise sur mon ins­tal­la­tion WordPress :

Réglage de la famille de polices du corps de page dans le thème Suffusion pour WordPressSi vous ne dis­po­sez pas de ce type de réglage ou si comme moi vous ne trou­vez pas votre bon­heur dans la liste pro­po­sée, sachez qu'il existe des réper­toires de polices en ligne tels que Font Squir­rel ou le tout récent Google Font Direc­tory que nous pou­vons uti­li­ser pour ajou­ter la défi­ni­tion de notre police au thème de notre CMS ou à notre site Web :

Les modi­fi­ca­tions pré­sen­tées ci-après ne sau­raient s'appliquer à tous les cas par­ti­cu­liers, il y a de fortes chances pour que vous ayez d'autres mani­pu­la­tions ou modi­fi­ca­tions à effec­tuer. Faites bien atten­tion quand vous édi­tez des fichiers de votre CMS ou de votre site Web, et faites tou­jours une sau­ve­garde avant.

Pour les CMS, il s'agit d'éditer le fichier d'en-tête du thème : header.php pour Wor­press, head.html pour Spip, ?_head.html pour Dot­clear, etc. et d'ajouter la ligne suivante :

<link href='http://fonts.googleapis.com/css?family=Ubuntu:regular,italic,bold' rel='stylesheet' type='text/css'>

Ici, j'utilise la police Ubuntu du réper­toire de Google. Ima­gi­nons que je pré­fère faire appel à ma police loca­le­ment et que j'utilise l'un des mer­veilleux kits @font-face four­nis par Font Squir­rel :

<link rel="stylesheet" href="ubuntustyle.css" type="text/css" charset="utf-8">

et le fichier ubuntustyle.css contien­dra ceci :

@font-face {
font-family: 'UbuntuRegular';
src: url('Ubuntu-R-webfont.eot');
src: local('?'), url('Ubuntu-R-webfont.woff') format('woff'), url('Ubuntu-R-webfont.ttf') format('truetype'), url('Ubuntu-R-webfont.svg#webfont5QrTZHwg') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'UbuntuItalic';
src: url('Ubuntu-I-webfont.eot');
src: local('?'), url('Ubuntu-I-webfont.woff') format('woff'), url('Ubuntu-I-webfont.ttf') format('truetype'), url('Ubuntu-I-webfont.svg#webfontwdgWd3TL') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'UbuntuBold';
src: url('Ubuntu-B-webfont.eot');
src: local('?'), url('Ubuntu-B-webfont.woff') format('woff'), url('Ubuntu-B-webfont.ttf') format('truetype'), url('Ubuntu-B-webfont.svg#webfontCKhwRblf') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'UbuntuBoldItalic';
src: url('Ubuntu-BI-webfont.eot');
src: local('?'), url('Ubuntu-BI-webfont.woff') format('woff'), url('Ubuntu-BI-webfont.ttf') format('truetype'), url('Ubuntu-BI-webfont.svg#webfontLmVyebAO') format('svg');
font-weight: normal;
font-style: normal;
}

Main­te­nant, il va fal­loir édi­ter les styles de notre CMS, c'est à dire très sou­vent le fichier style.css (Word­Press et Dot­clear) ou habillage.css (Spip), bref, le fichier de styles cor­res­pon­dant. Il va s'agir d'appliquer la nou­velle police aux élé­ments vou­lus, comme par exemple :

h1, h2, h3, h4, h5, h6 {
font-family: Ubuntu, Tahoma, Verdana, Arial, sans-serif;
line-height:130%;
}
body {
font-family: Ubuntu, Tahoma, Verdana, Arial, sans-serif;
line-height:130%;
}

ou encore

h1.fontface {
font: 60px/68px 'UbuntuRegular', Arial, sans-serif;
letter-spacing: 0;
}
p.style1 {
font: 18px/27px 'UbuntuRegular', Arial, sans-serif;
}
p.style2 {
font: 18px/27px 'UbuntuItalic', Arial, sans-serif;
}
p.style3 {
font: 18px/27px 'UbuntuBold', Arial, sans-serif;
}
p.style4 {
font: 18px/27px 'UbuntuBoldItalic', Arial, sans-serif;
}

Et voilà ! Il vous suf­fit de rechar­ger vos pages pour appré­cier la dif­fé­rence (et éven­tuel­le­ment de vider le cache si vous uti­li­sez un sys­tème de cache).

Dans le cas où vous vou­lez appli­quer cela à votre site web, la tech­nique est la même. Si vous dis­po­sez d'un fichier d'en-tête qui s'applique à toutes les pages c'est exac­te­ment la même démarche. Si vous n'avez pas d'en-tête com­mun à toutes vos pages, voici un exemple de modèle de page inté­grant votre police :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Font Face Demo</title>
<link rel="stylesheet" href="ubuntustyle.css" type="text/css" charset="utf-8">
<style type="text/css" media="screen">
h1.fontface {
font: 60px/68px 'UbuntuRegular', Arial, sans-serif;
letter-spacing: 0;
}
p.style1 {
font: 18px/27px 'UbuntuRegular', Arial, sans-serif;
}
p.style2 {
font: 18px/27px 'UbuntuItalic', Arial, sans-serif;
}
p.style3 {
font: 18px/27px 'UbuntuBold', Arial, sans-serif;
}
p.style4 {
font: 18px/27px 'UbuntuBoldItalic', Arial, sans-serif;
}
#container {
width: 800px;
margin-left: auto;
margin-right: auto;
}
</style>
</head>

Le contenu du fichier ubuntustyle.css sera le même que pré­senté plus haut.

Vous pou­vez bien sûr uti­li­ser le réper­toire de polices de Google par exemple si vous ne vou­lez ou pou­vez pas accé­der à des copies locales de la police choi­sie. La ligne 6 est dans ce cas
<link href='http://fonts.googleapis.com/css?family=Ubuntu:regular,italic,bold' rel='stylesheet' type='text/css'>

Voici en sub­stance com­ment inté­grer une police de votre choix dans votre site Web ou votre CMS. Gar­dez quand même à l'esprit que la typo­gra­phie du Web est un sujet vaste et com­plexe et que le choix d'une police d'affichage ne doit en aucun cas se faire à la légère. Évi­tez d'utiliser des familles de polices trop exo­tiques qui ris­que­raient de rendre votre site inin­tel­li­gible, une police se doit d'être lisible avant d'être jolie, les deux n'allant pas tou­jours de pair, loin s'en faut !

Read More

Utiliser YOURLS avec un nom de domaine internationalisé, WordPress et un client Identi.ca ou Twitter

Le contenu de cette page est obso­lète ! Le déve­lop­peur de YOURLS a sorti un plu­gin offi­ciel pour obte­nir le sup­port des IDN dans YOURLS, que vous pou­vez trou­ver à cette adresse : http://blog.yourls.org/wp-content/uploads/2011/05/yourls-idn.zip (néces­site YOURLS 1.5.1 ou supérieur)

YOURLS (Your Own URL Shor­te­ner) est un script PHP de rac­cour­cis­se­ment d'URL, c'est à dire qu'il fait exac­te­ment la même chose que bit.ly ou goo.gl, pour ne citer qu'eux. Il per­met de créer son propre ser­vice de rac­cour­cis­se­ment d'URL à usage public ou privé, et ainsi de se dédoua­ner des four­nis­seurs de ser­vices tiers pour béné­fi­cier de cette fonc­tion­na­lité bien pra­tique pour pos­ter une adresse Inter­net sur divers sup­ports tels que les réseaux sociaux tout en béné­fi­ciant d'un sys­tème de sta­tis­tiques sur l'utilisation des adresses réduites créées. Vous pou­vez choi­sir la séquence de carac­tères uti­li­sés pour réduire une URL don­née, un sys­tème pra­tique de plu­gins arti­culé autour de l'API de YOURLS, bref, de toutes les fonc­tion­na­li­tés dont vous pou­vez avoir besoin dans le cadre de la mise en place d'un tel service.

Il y a une foul­ti­tude de rai­sons qui peuvent ame­ner quelqu'un à dési­rer maî­tri­ser le ser­vice de rac­cour­cis­se­ment d'URL qu'il uti­lise, mais le but de cet article n'est pas d'exposer celles qui m'ont poussé à mettre en place cette solu­tion pour mon usage per­son­nel. Tou­jours est-il que j'ai récem­ment acquis le nom de domaine caï.eu afin de l'utiliser en tant que ser­vice privé avec YOURLS. Très facile, l'installation s'est dérou­lée sans aucun pro­blème mais mes pre­mières ten­ta­tives d'utilisation se sont sol­dées par une série d'échecs cui­sants. En cause ? Le nom de domaine choisi.

En effet, caï.eu pré­sente la par­ti­cu­la­rité sub­tile mais qui ne vous aura pas échap­pée de conte­nir un carac­tère habi­tuel­le­ment absent des noms de domaines car non défini par le stan­dard ASCII : le i tréma, « ï ». Il s'agit d'un IDN, ou Nom de Domaine Inter­na­tio­na­lisé, tel que défini par le stan­dard RFC 3490. Comme le stan­dard défi­nis­sant les noms de machines (RFC 1123) n'autorise pas de tels carac­tères, le pro­to­cole IDNA conver­tit les IDN en noms de domaines conformes au stan­dard ASCII, sous un for­mat appelé PUNYCODE. Pour faire court, caï.eu est trans­formé par ce pro­cédé en xn--ca-uja.eu. C'est trans­pa­rent pour les uti­li­sa­teurs (tant que l'on dis­pose d'un navi­ga­teur Inter­net un tant soit peu civi­lisé) mais YOURLS, lui, n'aime pas ça. Mais alors, pas du tout.

Si la créa­tion des URL courtes se passe sans pro­blème, leur uti­li­sa­tion est, elle, impos­sible en l'état. Le sys­tème fait une boucle et finit par ren­voyer une erreur 404, avouez que ce n'est pas l'idéal ! Il existe d'ailleurs un rap­port de bug à ce pro­pos, mais le déve­lop­peur de YOURLS a clai­re­ment fait savoir que l'ajout de la prise en charge native des IDN ne fai­sait pas du tout par­tie de ses prio­ri­tés, bien que pré­vue à terme. Heu­reu­se­ment, il y a une solu­tion. Elle n'est pas ce qu'il y a de plus propre, mais elle fonctionne :

NET_IDNA2 requiert PHP >= 5.2.1
NET_IDNA requiert PHP >= 4.3.0
PHP >= 5.3.0 avec PECL intl >= 1.0.2 ne requiert pas l'utilisation de NET_IDNA/2 car il contient deux fonc­tions IDNA natives : idn_to_ascii et idn_to_utf8 (alias : idn_to_unicode).

Il faut tout d'abord télé­char­ger le package NET_IDNA2 ici : http://pear.php.net/package/Net_IDNA2/. Ceci fait, décompressez-le et copiez le fichier ??/Net_IDNA2-0.1.1/Net/IDNA2.php qu'il contient dans le dos­sier /includes/ de votre ins­tal­la­tion YOURLS. Main­te­nant, il va fal­loir effec­tuer quelques modifications :

– Édi­tez votre fichier config.php (qui se trouve dans /user/ ou /includes/ selon votre ver­sion de YOURLS). Il s'agit de remplacer

/** YOURLS installation URL, no trailing slash */
define('YOURLS_SITE', 'http://caï.eu');

par

/** YOURLS installation URL, no trailing slash */
/* IDNA support */
$idn = Net_IDNA2::getInstance();
$idn->setParams('utf8', true);
$idn->setParams('strict', false);
$location = $idn->encode($location);
/* End IDNA support */
define('YOURLS_SITE', 'http://xn--ca-uja.eu');
Comme vous pou­vez le remar­quer, il faut uti­li­ser la tra­duc­tion PUNYCODE de son nom de domaine, sinon ça ne fonc­tion­nera pas…

– Main­te­nant, il faut édi­ter le fichier /includes/load_yourls.php, et remplacer

// Include settings
if(file_exists(dirname(__FILE__).'/config.php') ) {
[...]

par

// Include settings
// IDNA support
require_once (dirname(__FILE__).'/IDNA2.php');
// End IDNA support
if(file_exists(dirname(__FILE__).'/config.php') ) {
[...]

Une fois ces modi­fi­ca­tions effec­tuées et dûment enre­gis­trées, vous pour­rez consta­ter que la réso­lu­tion de vos URL rac­cour­cies est main­te­nant plei­ne­ment fonc­tion­nelle. C'est déjà très bien, mais il sub­siste un petit problème.

En effet, s'il vous prend l'envie d'utiliser des logi­ciels tiers fai­sant appel à YOURLS direc­te­ment ou via son API, comme par exemple Chro­med Bird (exten­sion de Chro­mium pour Identi.ca/Twitter) ou le plu­gin Word­Press WP-To-Twitter ou l'autre plu­gin YOURLS: Word­Press to Twit­ter, ou que sais-je encore, vous pour­rez vous rendre compte que l'URL retour­née dans votre mes­sage est sous sa forme PUNYCODE. Pas cool du tout, ça…

Voici un hack encore plus sale que le pré­cé­dent mais qui per­met­tra aux logi­ciels tiers de récu­pé­rer la bonne adresse :

– Repre­nez votre fichier config.php et ajou­tez à la suite des pré­cé­dentes modifications :

/* IDNA support : YOURLS installation URL alias for IDNA cases, should be the same as YOURLS installation URL above in most cases. No trailing slash. */
/* IDNA support : third-party clients (like ChromedBird, WP-to-Twitter, etc.) retrieve the UTF-8 URL instead of the punycode */
define('YOURLS_SITE_IDNA', 'http://caï.eu')

C'est assez évident : on ajoute une défi­ni­tion d'URL alter­na­tive pour le cas d'un nom de domaine IDN. Cela va nous per­mettre d'utiliser direc­te­ment notre IDN dans la fonc­tion qui ren­voie l'URL rac­cour­cie au client. Pour cela, il faut appor­ter une petite modi­fi­ca­tion au fichier /includes/functions.php :

– trou­vez le mor­ceau de code suivant :

		// Custom keyword provided
		if ( $keyword ) {
			$keyword = yourls_escape( yourls_sanitize_string($keyword) );
			$keyword = yourls_apply_filter( 'custom_keyword', $keyword );
			if ( !yourls_keyword_is_free($keyword) ) {
				// This shorturl either reserved or taken already
				$return['status'] = 'fail';
				$return['code'] = 'error:keyword';
				$return['message'] = 'Short URL '.$keyword.' already exists in database or is reserved';
			} else {
				// all clear, store !
				yourls_insert_link_in_db( $url, $keyword, $title );
				$return['url'] = array('keyword' => $keyword, 'url' => $strip_url, 'title' => $title, 'date' => date('Y-m-d H:i:s'), 'ip' => $ip );
				$return['status'] = 'success';
				$return['message'] = yourls_trim_long_string( $strip_url ).' added to database';
				$return['title'] = $title;
				$return['html'] = yourls_table_add_row( $keyword, $url, $title, $ip, 0, time() );
				$return['shorturl'] = YOURLS_SITE .'/'. $keyword;
			}

		// Create random keyword
		} else {
			$timestamp = date('Y-m-d H:i:s');
			$id = yourls_get_next_decimal();
			$ok = false;
			do {
				$keyword = yourls_int2string( $id );
				$keyword = yourls_apply_filter( 'random_keyword', $keyword );
				$free = yourls_keyword_is_free($keyword);
				$add_url = @yourls_insert_link_in_db( $url, $keyword, $title );
				$ok = ($free && $add_url);
				if ( $ok === false && $add_url === 1 ) {
					// we stored something, but shouldn't have (ie reserved id)
					$delete = yourls_delete_link_by_keyword( $keyword );
					$return['extra_info'] .= '(deleted '.$keyword.')';
				} else {
					// everything ok, populate needed vars
					$return['url'] = array('keyword' => $keyword, 'url' => $strip_url, 'title' => $title, 'date' => $timestamp, 'ip' => $ip );
					$return['status'] = 'success';
					$return['message'] = yourls_trim_long_string( $strip_url ).' added to database';
					$return['title'] = $title;
					$return['html'] = yourls_table_add_row( $keyword, $url, $title, $ip, 0, time() );
					$return['shorturl'] = YOURLS_SITE .'/'. $keyword;
				}
				$id++;
			} while (!$ok);
			@yourls_update_next_decimal($id);
		}

Pour info, ce bloc com­mence à la ligne 389 dans mon fichier, il devrait en être à peu près pareil pour vous. Remar­quez les lignes n° 18 et 43 dans le bloc de code ci-dessus : ce sont celles-ci que nous allons modi­fier. Pas grand chose à faire, d'ailleurs, il suf­fit de rem­pla­cer cha­cune de ces deux lignes par ceci :

/* IDNA support : let third-party clients (like ChromedBird, WP-to-Twitter, etc.) retrieve the UTF-8 URL, not the punycode one */
$return['shorturl'] = YOURLS_SITE_IDNA .'/'. $keyword;

Une petite modi­fi­ca­tion donc qui consiste sim­ple­ment à chan­ger YOURLS_SITE en YOURLS_SITE_IDNA, mais une petite modi­fi­ca­tions qui fait toute la dif­fé­rence : vos clients récu­pé­re­ront désor­mais votre URL rac­cour­cie dans le bon for­mat. Ça y est, YOURLS est prêt à être uti­lisé au maxi­mum de ses possibilités !

Voilà, en atten­dant que le déve­lop­peur de YOURLS ait le temps et l'envie de se pen­cher sur ce pro­blème, ça per­met d'utiliser de manière plei­ne­ment fonc­tion­nelle cet excellent URL Shor­te­ner sur vos noms de domaines exo­tiques et avec les clients de votre choix.

Raccourcissez-bien !

Read More

Insérer des iframes dans ses pages sous WordPress

Bien que les iframes soient de très mau­vaises solu­tions en termes de SEO, il existe autant de com­por­te­ments que d'utilisateurs et d'aucun uti­li­sant Word­Press pour­rait éprou­ver le besoin d'en uti­li­ser dans ses pages ou ses articles afin d'y inclure tout type de contenu.

Le pro­blème, c'est que si vous pas­sez en mode d'édition HTML et y entrez vos tags <iframe>, ceux-ci seront exfil­trés par le pro­ces­seur de texte lors de la publi­ca­tion de l'article, et vous ne pour­rez pas affi­cher cor­rec­te­ment le contenu de l'iframe.

Embê­tant, hein ?

Voilà la solu­tion : à l'aide de votre édi­teur pré­féré, édi­tez le fichier functions.php de votre thème (géné­ra­le­ment /wp-content/themes/votre-thème/functions.php)et ajoutez-y, par exemple à la fin, avant « ?> » :

// Fonction pour initialiser les iframes
function add_iframe($initArray) {
$initArray['extended_valid_elements'] = "iframe[id|class|title|style|align|frameborder|height|longdesc|marginheight|marginwidth|name|scrolling|src|width]";
return $initArray;
}
// Ajoute la fonction aux filtres de l'éditeur de texte de WordPress
add_filter('tiny_mce_before_init', 'add_iframe');

Sau­ve­gar­dez, et voilà ! Vous pou­vez main­te­nant uti­li­ser les balises <iframe> dans vos articles sans qu'elles ne soient éliminées.

Read More

Sortie de Django 1.2

Yo !

Un petit billet rapide pour vous annon­cer qu'après des mois de tra­vail, le fra­me­work web en python qu'on ne pré­sente plus sort enfin en ver­sion 1.2 !

À noter que ceci est la pre­mière ver­sion offi­cielle qui ne sup­porte pas python 2.3 : python 2.4 est désor­mais requis, ou alors il vous fau­dra res­ter à la ver­sion 1.1 de Django (qui reste sup­por­tée jusqu'à la réa­li­sa­tion de la 1.3) et ce serait dom­mage car Django 1.2 apporte son lot de nou­veau­tés dont :

  • Sup­port de bases de don­nées mul­tiples dans une seule ins­tance de Django.
  • Vali­da­tion des modèles ins­pi­rée de la vali­da­tion de for­mu­laires de Django.
  • Grande amé­lio­ra­tion de la pro­tec­tion contre les CSRF.
  • Un nou­veau fra­me­work de mes­sages uti­li­sa­teur avec sup­port des mes­sages basés sur cookie ou ses­sion, que ce soit pour les uti­li­sa­teurs ano­nymes ou authentifiés.
  • Défi­ni­tion des niveaux de per­mis­sions objet et des per­mis­sions des uti­li­sa­teurs ano­nymes, condi­tions allé­gées pour les noms d'utilisateurs.
  • Per­son­na­li­sa­tion de l'envoi d'email.
  • Nou­velle balise if intel­li­gente sup­por­tant les opé­ra­teurs de comparaison.

Ça, c'est pour les chan­ge­ments les plus importants.

Pour le reste, je vous invite à lire les notes de ver­sion[en] puis à télé­char­ger Django 1.2.

Logo Django
Read More