Django servir statique index.html avec une vue sur '/' url
J'ai mon index.html dans /static/dossier. Mon django app est en cours d'exécution ok quand j'essaie:
http://127.0.0.1:8000/index.html
Mais je veux acces index.html url:
http://127.0.0.1:8000/
Je l'ai écrit d'un point de vue et il fonctionne:
class IndexView(TemplateView):
template_name = 'index.html'
J'ai également ajouté à urls.py(ce qui me permet de servir statique comme http://127.0.0.1:8000/css/style.css
):
url(r'^(?P<path>.*)$', 'django.contrib.staticfiles.views.serve', {
'document_root': settings.STATIC_ROOT, 'show_indexes':True
}),
Mais je pense qu'il y a un moyen de faire ce que je veux sans TemplateView.
Des suggestions? Merci. Mon django version: Django 1.5
MODIFIER:
La raison que j'ai mis index.html en statique: je veux faire de Phonegap compatible django app, donc après le codage approprié, tout ce que j'ai à faire est de --> faire .zip à partir de statique dossier et de le transférer à Phonegap comme application mobile. Facile et propre.
- Pourquoi ne voulez-vous pas une TemplateView? Il est là pour cette raison.
- J'ai juste pensé qu'il y est un moyen de servir, sans un point de vue à tous.
- Utiliser le flatpage app, puis.
I have my index.html in /static/ folder
- c'est votre problème./static/
n'est pas pour les fichiers html.- C'est du html statique, pas de modèle. Juste la paix de code statique sans django tempalte balises et etc.
- Alors vraiment, utiliser le FlatPage application, il est conçu pour ce cas d'utilisation.
- OK, peut-être que la prochaine fois je vais l'utiliser. Y compris d'une autre application pour django n'est pas pire une page de servir.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez servir
static/index.html
pour le développement comme ceci:Mais pour la production, vous devez configurer votre
nginx
(ou autre interface serveur) pour servirindex.html
fichier pour/
emplacementMise à JOUR
Je tiens à expliquer le cas, vous devez faire comme ceci. Par exemple, votre django app n'est admin et api de vue, mais le client interagit avec une single page application (Braise, Angulaire, peu importe). Si vous le projet a au moins deux sous-projets, l'un avec votre principal django app et la seconde est une application client avec l'ensemble du html/js/css choses. Il est très commode d'avoir des scripts client distinct de django backend, il permet à votre frontend aux développeurs de faire leur travail et éviter de django existence (un jour, il peut être déplacé à l'distinctes repo).
Dans ce cas, vous obtenez le résultat suivant workflow de build:
brunch watch
,grunt
emploi ougulp
regarder tâche)Voici mon
urls.py
exempleVous n'avez pas besoin de sous-classe
TemplateView
dans ce cas. Vous pouvez utiliserTemplateView
directement dans votre url de la conf, aussi longtemps queindex.html
est dans votre répertoire de modèles.views.serve
helper est prévu pour le développement seulement. Vous ne devriez pas utiliser Django pour servir les fichiers statiques dans la production. Utiliser votre serveur web par exemple, Apache ou Nginx pour servir les fichiers statiques.from django.views.generic import TemplateView
Juste envelopper de votre fichier HTML statique dans un iframe défini dans basé sur un modèle de fichier HTML. Avec un peu de style réglages peuvent faire l'iframe 100% de la largeur et de la hauteur.
vous pouvez créer des modèles de répertoire, mettre le html il et rendre ensuite à partir de views.py
ne pas oublier de mettre le templates_dir dans le settings.py
Découvrez ma longue explication de la manière de servir index.html sur
/
dans cette réponse (ou étendu comme un post de blog). Cette solution peut ne pas être suffisante, cependant, si vous voulez avoir un véritable SPA servi par Django (parce que vous avez besoin d'interface de routage).J'ai été jouer avec les différentes méthodes de routage
/static/
à/
, la redirection de toutes les demandes pour le frontend, trouver index.html fichiers. En fin de compte j'ai trouvé la meilleure méthode pour résoudre tout cela n'a pas été en peaufinant urls.py, mais comme une extension de WhiteNoise que je l'ai sorti comme django-spa (les instructions d'installation dans le fichier README).Vous pouvez trouver une partie de la discussion dans ce WhiteNoise problème.