IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

ValueError at /libri/ricerca/


Sujet :

Django Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 27
    Points : 28
    Points
    28
    Par défaut ValueError at /libri/ricerca/
    Bonjour,
    je n'arrive pas à comprendre l'erreur que j'ai avec mon code.
    Merci pour l'aide.

    L'erreur:
    Environment:

    Request Method: GET
    Request URL: http://127.0.0.1:8000/libri/ricerca/
    Django Version: 1.1.1
    Python Version: 2.6.3
    Installed Applications:
    ['django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',
    'django.contrib.admindocs',
    'libreria']
    Installed Middleware:
    ('django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware')


    Traceback:
    File "c:\python26\lib\site-packages\django\core\handlers\base.py" in get_response
    109. raise ValueError, "The view %s.%s didn't return an HttpResponse object." % (callback.__module__, view_name)

    Exception Type: ValueError at /libri/ricerca/
    Exception Value: The view libreria.views_wiki.ricerca didn't return an HttpResponse object.

    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
    import urllib2
    from django import forms
    from django.shortcuts import render_to_response
    from django.shortcuts import get_object_or_404
    from django.utils.simplejson.decoder import JSONDecoder
    from models import *
     
    class WikisearchForm(forms.Form):
          autore = forms.IntegerField(widget=forms.Select(
                 choices = [(autore.pk, autore) for autore in Autore.objects.all()]))
          wikipedia = forms.CharField(widget=forms.Select(
                      choices=(("it","Italiana"), ("en","Inglese"))))
          limite = forms.IntegerField(initial=10, widget=forms.RadioSelect(
                                                  choices=((10,"10"), 
                                                           (50,"50"), 
                                                           (100,"100"))))
     
    wiki_url_api="http://%s.wikipedia.org/w/api.php?action=query&format=json&srlimit=%s&list=search&srsearch=%s"
    wiki_link="http://%s.wikipedia.org/wiki/"
     
    def ricerca(request):
        risultati = link = None
        if request.method == 'POST':
            form = WikisearchForm(request.POST)
            if form.is_valid():
                autore = get_object_or_404(Autore,
                                pk=form.cleaned_data['autore'])
                url = wiki_url_api % (form.cleaned_data['wikipedia'],
                                      form.cleaned_data['limite'],
                                      autore.cognome)
                link = wiki_link % form.cleaned_data['wikipedia']
                dati = urllib2.urlopen(url.encode('utf-8')).read()
                valori = JSONDecoder().decode(dati)
                risultati = valori['query']['search']
            else:
                form = WikisearchForm()
            return render_to_response('wikisearch.html', {
                'form': form,
                'link': link,
                'risultati': risultati,})

  2. #2
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    Bonjour,

    ta vue ne renvoie aucune valeur en cas de requête GET d'où ton erreur.
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 27
    Points : 28
    Points
    28
    Par défaut
    Excuse, mais le dernier return? Je suis au début et je comprend très peu du langage. En plus c'est du code que j'ai copié d'un livre.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    return render_to_response('wikisearch.html', {
                'form': form,
                'link': link,
                'risultati': risultati,})

  4. #4
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    ton return n'est appellé qu'avec la méthode POST
    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
    def ricerca(request):
        risultati = link = None
        if request.method == 'POST':
    
             blablabla
    
             return render_to_response('wikisearch.html', {
                    'form': form,
                    'link': link,
                    'risultati': risultati,})
    
        # ajoute ca:
        else: #si la methode n'est pas POST 
            form = WikisearchForm()
            return render_to_response('wikisearch.html', {
                  'form': form,
                  'link': link,
                  'risultati': risultati,})
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Points : 62
    Points
    62
    Par défaut
    Si tu débutes en python, attention à l'indentation, on a vite fait de se tromper de bloc conditionnel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération de ValueError
    Par meles dans le forum Général Python
    Réponses: 11
    Dernier message: 08/10/2012, 15h41
  2. test.py : ValueError: invalid literal for int()
    Par black-falco dans le forum Django
    Réponses: 2
    Dernier message: 05/08/2011, 12h11
  3. ValueError: dimensions too large
    Par perka dans le forum Calcul scientifique
    Réponses: 0
    Dernier message: 21/03/2011, 11h46
  4. [Pyopengl] glGenBuffers : ValueError
    Par Invité dans le forum 3D
    Réponses: 0
    Dernier message: 12/06/2010, 23h10
  5. Réponses: 2
    Dernier message: 25/06/2009, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo