Problème avec les accents
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:
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:
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:
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 :aie:, 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):
Citation:
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