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)
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
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))
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 {% 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 %}
Bon c'est un peu long
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>, 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):
Pour compléter, je travaille actuellement sur le serveur local de développement, je suis sur Ubuntu 9.04TemplateSyntaxError at /
Caught an exception while rendering: ('utf8', '<!DOCTYPE ...
Merci d'avance de votre aide,
@+
Duf
Partager