2009-11-02 4 views
0

J'écris une application GUI en utilisant Django 1.1.1.Quel peut être le problème (vues Django) ...?

C'est le views.py:

from django.http import HttpResponse 

def mainpage(request): 
    f=open('pages/index.html','r').readlines() 
    out='''''' 
    for line in file: 
     out+=line 

    print out 
    return HttpResponse(out) 

Je suis en train de charger le contenu de index.html qui se trouve dans une des pages de dossier dans le dossier de l'application GUI.

Mon projet de urls.py est

from django.conf.urls.defaults import * 
from gui.views import * 

urlpatterns = patterns('', 

    (r'^/$', mainpage) 
) 

Quand je lance le serveur je reçois une erreur 404 pour le site racine. Comment puis-je charger le fichier index.html à travers des vues?

Répondre

0

L'a reçu! ;)

Il semble que la fonction mainpage fonctionne réellement sur le fichier urls.py (tel qu'il est importé du fichier views.py), donc le chemin que je dois fournir est gui/pages/index.html. J'avais encore un problème, « objet de type non itérables », mais ce qui suit travaillé:

def mainpage(request): 
    f=open('gui/pages/index.html','r').readlines() 
    return HttpResponse(f) 
modèle

Et url était r^$ 'il a travaillé sur lui-même http://localhost:8080/.

3

Si vous avez besoin tout simple sortie de la page html, cela peut être réalisé en mettant simplement en suivant urls.py:

(r'^$', 'direct_to_template', {'template': 'index.html'})

+0

l'instruction d'impression ne fonctionne jamais trop .. quel pourrait être le problème? – Sriram

+0

J'ai commenté ces lignes de la page principale func et juste mettre un retour HttpResponse ('bonjour'). maintenant aussi la vue racine ne fonctionne pas mais localhost: 8080 // fonctionne – Sriram

+0

je les décommente encore et ajouté le retour HttpResponse (out) maintenant il dit «Aucun fichier ou répertoire», le problème doit être en ouvrant le fichier .. mais essayé la même chose sur l'interpréteur Python et cela fonctionne .. – Sriram

1

Pour la page racine ne pas utiliser r'^/$', juste r'^$', parce que ce ^ signifie "début de la chaîne après le domaine ET SLASH" (après 127.0.0.1/ si vous exécutez app sur localhost). C'est pourquoi localhost:8080// travaille pour vous.

Editer: vérifiez également les chemins d'accès. Avez-vous le répertoire 'pages' dans le même répertoire que views.py?

De toute façon: il semble que vous essayez de faire quelque chose de mal et contre l'architecture Django. Regardez here pour le tutoriel sur l'écriture de votre première application dans Django.

+0

merci mais enfin j'ai trouvé mon chemin ... si vous aviez posté un peu plus tôt, il aurait aidé un peu .. haha;) – Sriram

0

Votre code actuel dans la vue est incorrect. Voici mon fixe jusqu'à la version:

from django.http import HttpResponse 

def mainpage(request): 
    lines=open('loader/pages/index.html','r').readlines() 
    out='''''' 
    for line in lines: 
     out+=line 

    print out 
    return HttpResponse(out) 

Notez que dans votre code la ligne qui lit le fichier est:

f=open('pages/index.html','r').readlines() 

Vous ouvrez le fichier et de lire les lignes dans f puis essayez de itérer sur les lignes. L'autre changement est juste pour obtenir mon chemin vers le fichier d'index réel.

Vous voudrez peut-être lire ceci http://docs.djangoproject.com/en/dev/howto/static-files/ si vous souhaitez diffuser des pages statiques.

+0

vous aviez raison .. mais il y avait un autre problème ... je devais trouver le contexte dans lequel la fonction a été appelée qui était l'urs.py n il était 1 dossier en place .. donc je devais ajouter le dossier parent au chemin du fichier .. – Sriram

+0

correction dans mon commentaire urls.py – Sriram

Questions connexes