Bonjour à tous,

Je me tourne vers vous car j'ai un problème depuis un moment et malgré mes recherches et mes essais je n'ai pas réussi à corriger.

C'est tout simple en fait, si je mets un accent dans un template (donc un fichier HTML), Django me renvoi une erreur au niveau de la fonction get_template.

Une démonstration valant mieux que de longues explications:

Voici mon fichier views.py (pour ma page d'accueil)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/python
# -*- coding: utf-8 -*-

from django.shortcuts import render_to_response
from django.template import RequestContext
from ????.news.views import *

def indexpage(request,parameters):
	
	# Define the maximum number of news per page
	news_per_page = 5
	
	# Extract page parameters
	param_data = extractParameters(parameters)
	
	# Get news according to user permissions and page parameters
	news_list = getNewsByType(request.user,param_data)
	
	# Define menus
	menu_data = []
	for news_temp in news_list:
		menu_data.append({'title':news_temp['type'],'abrev':news_temp['type'][0:4].lower(),'data':news_temp['data'][0:5]})
	
	# List all news to display
	news_list = getAllNews(request.user,param_data)
	
	# Keep only news to display
	news_data = news_list[((param_data['page']-1)*news_per_page):((param_data['page']*news_per_page)-1)]
	
	# Display index page
	return render_to_response('index.html', {'menu_data':menu_data, 'news_data':news_data, 'parameters':param_data}, context_instance=RequestContext(request))
Le template index.html
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
{% extends "base.html" %}
 
{% block title %}{{ block.super }} - Accueil{% endblock %}
 
{% block page_menu %}
{% for menu in menu_data %}<div id="group">
<h3>{{menu.title}}</h3>
<ul>
{% ifequal parameters.type menu.abrev %}
{% for data in menu.data %}
{% ifequal parameters.id data.id %}<li class="selected"><a href="/{{menu.abrev}}_{{data.id}}" class="selected">{{data.titre}}</a></li>
{% else %}<li><a href="/{{menu.abrev}}_{{data.id}}">{{data.titre}}</a></li>{% endifequal %}
{% endfor %}
{% else %}{% for data in menu.data %}
<li><a href="/{{menu.abrev}}_{{data.id}}">{{data.titre}}</a></li>
{% endfor %}{% endifequal %}
</ul>
<a href="/{{menu.abrev}}_all_1" class="footer">Voir tous</a>
</div>{% endfor %}
{% endblock %}
 
{% block content %}
<ul>
{% for news in news_data %}<li>
<h3><a href="{{news.lien}}">{{news.titre}}</a></h3>
<p>{{news.message|linebreaks}}</p>
<div class="item_foot"><a>Par {% if news.auteur.first_name and news.auteur.last_name %}{{news.auteur.first_name|make_list|first|upper}}.{{news.auteur.last_name}}{% else %}{{news.auteur.username|capfirst}}{% endif %} le {{news.date}}</a></div>
</li>{% endfor %}
</ul>
{% endblock %}
Et le template base.html
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>{% block title %}Titre du site{% endblock %}</title>
{% block css %}
<link rel="stylesheet" href="/{{ media_url }}/{{ STYLE_DIR }}/{{ CURR_STYLE }}/main.css" type="text/css" media="screen" / >
<link rel="stylesheet" href="/{{ media_url }}/{{ STYLE_DIR }}/{{ CURR_STYLE }}/nav_menu.css" type="text/css" media="screen" / >
<link rel="stylesheet" href="/{{ media_url }}/{{ STYLE_DIR }}/{{ CURR_STYLE }}/header.css" type="text/css" media="screen" / >
<link rel="stylesheet" href="/{{ media_url }}/{{ STYLE_DIR }}/{{ CURR_STYLE }}/formular.css" type="text/css" media="screen" / >
<link rel="stylesheet" href="/{{ media_url }}/{{ STYLE_DIR }}/{{ CURR_STYLE }}/content.css" type="text/css" media="screen" / >
<link rel="stylesheet" href="/{{ media_url }}/{{ STYLE_DIR }}/{{ CURR_STYLE }}/page_menu.css" type="text/css" media="screen" / >
<link rel="stylesheet" href="/{{ media_url }}/{{ STYLE_DIR }}/{{ CURR_STYLE }}/pubs.css" type="text/css" media="screen" / >
{% endblock %}
</head>
 
<body>
<!-- Block : Header -->
<div id="header">
{% block header %}{% endblock %}
<!-- Block : Members --><!-- Block end -->
</div>
<!-- Block end -->
 
<!-- Block : Navigation -->
<!-- Block end -->
 
<!-- Block : Page menu -->
<div id="page_menu">
{% block page_menu %}{% endblock %}
</div>
<!-- Block end -->
 
<!-- Block : Data -->
<div id="content">
{% block content %}{% endblock %}
</div>
<!-- Block end -->
 
<!-- Block : Pubs -->
<div id="pubs">
{% block pubs %}{% endblock %}
</div>
<!-- Block end -->
 
<!-- Block : Footer -->
<div id="footer">
{% block footer %}{% endblock %}
</div>
<!-- Block end -->
</body>
</html>
Bon c'est un peu long , en l'état ca fonctionne mais si je rajoute un accent dans l'un des templates c'est le drame...

Un extrait de l'erreur obtenue (j'ai surligné en rouge la ligne qui pose problème dans le fichier views.py):
TemplateSyntaxError at /
Caught an exception while rendering: ('utf8', '<!DOCTYPE ...
Pour compléter, je travaille actuellement sur le serveur local de développement, je suis sur Ubuntu 9.04

Merci d'avance de votre aide,

@+
Duf