Hey, j'ai fait quelques changements à mon env django développement, comme certains d'entre vous ont suggéré. Jusqu'à présent, j'ai réussi à configurer et à l'exécuter avec succès avec postgres.Erreur dans django en utilisant Apache & mod_wsgi
Maintenant, j'essaie d'exécuter l'application en utilisant apache2 et mod_wsgi, mais j'ai rencontré ce petit problème après avoir suivi les directives des docs django.
Quand j'accéder à localhost/myapp/tâches cette erreur soulève:
Request Method: GET
Request URL: http://localhost/myapp/tasks/
Exception Type: TemplateSyntaxError
Exception Value:
Caught an exception while rendering: argument 1 must be a string or unicode object
Original Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/django/template/debug.py", line 71, in render_node
result = node.render(context)
File "/usr/local/lib/python2.6/dist-packages/django/template/defaulttags.py", line 126, in render
len_values = len(values)
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 81, in __len__
self._result_cache = list(self.iterator())
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 238, in iterator
for row in self.query.results_iter():
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/query.py", line 287, in results_iter
for rows in self.execute_sql(MULTI):
File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/query.py", line 2369, in execute_sql
cursor.execute(sql, params)
File "/usr/local/lib/python2.6/dist-packages/django/db/backends/util.py", line 19, in execute
return self.cursor.execute(sql, params)
TypeError: argument 1 must be a string or unicode object
... ... ...
Et puis il met en évidence un {% pour t dans les tâches%} étiquette de modèle, comme la source du problème est là, mais a bien fonctionné sur le serveur intégré.
La vue associée à cette page est vraiment simple, il suffit d'aller chercher tous les objets Tâche. Et le modèle les affiche simplement sur une table.
En outre, certains pages sont rendus ok. Je ne veux pas remplir cette question avec du code, donc si vous avez besoin de plus d'informations, je serais heureux de le fournir. Merci
EDIT
Donc, voici mon avis:
@login_required
def tasks(request, msg=''):
tasks = Task.objects.all()
message = msg
return custom_render('user/tasks.html',
{'tasks': tasks, 'message':message},
request)
Et voici mon modèle:
{% block main_content %}
{% if message %}
<p id="message" class="info">
{{message}}
</p>
{% endif %}
<a href="{% url GProject.myapp.views.new_task %}">Nueva Tarea</a>
<table id="tasks-table" >
<thead>
<tr>
<th colspan="4" >{{tasks|length}} tareas pendientes</th>
</tr>
<tr>
<th>#</th>
<th>Proyecto</th>
<th>Título</th>
<th>Estado</th>
</tr>
</thead>
<tbody>
{% for t in tasks %}
<tr id="row-{{t.id}}" class="{% cycle 'row-0' 'row-1' %} priority-{{ t.priority }}">
<td width="25">
<a href="{% url GProject.myapp.views.view_task t.id %}">{{t.id}}</a>
</td>
<td>
<a href="{% url GProject.myapp.views.view_task t.id %}">{{t.project}}</a>
</td>
<td width="400">
<a href="{% url GProject.myapp.views.view_task t.id %}">
{{t.title}}
</a>
</td>
<td>{{t.get_status_display}}</td>
</tr>
{% empty %}
<tr><td>No tasks</td></tr>
{% endfor %}
</tbody>
</table>
{% endblock main_content %}
Aussi, maintenant que je reçois cette erreur :
TypeError at /admin/tareas/
argument 1 must be a string or unicode object
Request Method: GET
Request URL: http://localhost/gpro/admin/tareas/
Exception Type: TypeError
Exception Value:
argument 1 must be a string or unicode object
Exception Location: /usr/local/lib/python2.6/dist-packages/django/db/backends/postgresql_psycopg2/base.py in _cursor, line 105
Python Executable: /usr/bin/python
Python Version: 2.5.4
EDIT
modèle Tâches ressemble à ceci:
class Task(models.Model):
project = models.ForeignKey(Project)
title = models.CharField(max_length=128)
description = models.TextField(max_length=1500)
effort = models.IntegerField(null=True, blank=True)
priority = models.IntegerField(max_length=1, null=True, blank=True, choices=PRIORITY_VALUES)
severity = models.IntegerField(max_length=1, null=True, blank=True, choices=SEVERITY_VALUES)
asignee = models.ForeignKey(User, blank=True, null=True, related_name='asignee')
milestone = models.ForeignKey(Milestone, blank=True, null=True)
created_by = models.ForeignKey(User, blank=True, null=True, related_name='created_by')
status = models.IntegerField(max_length=1, choices=STATUS_VALUES, default=1)
resolution_comment = models.CharField(max_length=1500, null=True, blank=True) #comentario al resolver la task
due_date = models.DateField(blank=True, null=True)
created_on = models.DateTimeField(auto_now_add = True)
#print
def __unicode__(self):
return self.title
custom_render:
def custom_render(template_name, data_dict, request):
return render_to_response(template_name,
data_dict,
context_instance=RequestContext(request))
Pouvez-vous modifier la source django et print repr sql et params? Lorsque le code est exécuté sous devserver et apache –
Piotr, je ne sais vraiment pas comment faire ça .. – Nacho
Django ne pointe pas toujours la bonne ligne dans le template. Ne fais pas trop confiance. – Macke