2009-08-28 8 views
3

J'ai deux sites écrits avec Django. Ce que je veux, c'est charger un contenu d'un site dans un autre. J'ai découvert que le meilleur choix pour ce faire serait d'utiliser .getJSON et JSON-P mais je n'ai aucune idée de comment mettre ces choses (Django, jQuery et JSONP) ensemble.Comment puis-je utiliser django avec JSONP pour charger du contenu depuis mon autre site?

Une aide d'utilisateurs plus expiriés?

EDIT

Je suis en train de achive un processus continu avec les choses étant chargées d'un site à un autre sur chaque pageview - pas un seul dump/stuff loaddata.

Répondre

0

La meilleure solution consiste à placer les deux sites dans la même base de données. Alors site2 peut simplement lire la base de données de site1. En effet, le site2 peut inclure les programmes d'application site1, ce qui fait que site2 inclut toutes les fonctionnalités du site1.

Si, pour une raison quelconque, vous ne pouvez pas obtenir site1 et site2 pour partager une base de données commune, site2 doit obtenir des données du site1 en le demandant via HTTP. Dans l'application site2, vous utilisez le même urls.py que site1. Les fonctions d'affichage site2, cependant, utilisent urllib2 pour effectuer des requêtes HTTP GET et POST sur site1. Une fois que la fonction d'affichage site2 a reçu la réponse de site1, elle la renvoie simplement.

Vos applications site2 peuvent ressembler à ceci.

def someSite2View(request): 
    site1= urllib2.open("http://site1/" + request.path ) 
    data= site1.read() 
    # you have to parse the data to extract the headers 
    return Response(headers and data) 

Ceci est étonnamment réalisable. Ce type de transfert se produit beaucoup dans les pipelines HTTP.

+0

Je pense que vous m'avez mal compris un peu. Je veux charger le contenu "en direct" puisque les données fournies par la vue dans le projet # 1 changent, et j'ai besoin qu'il soit également affiché dans le projet # 2. Pas une seule opération - plutôt un processus en cours –

0

jQuery.ajax() pour demander une donnée json via JSONP. Vous avez juste besoin de spécifier que dataType est 'jsonp' dans les options. Du côté serveur, il suffit de gérer une requête jsonp. Par exemple, vous pouvez utiliser le module django-jsonp, qui fournit à peu près tout ce dont vous avez besoin pour travailler avec les données jsonp dans django.

Questions connexes