2017-10-20 18 views
0

Je ne sais pas si c'est même possible, mais je voudrais saisir l'entrée d'un utilisateur, l'insérer dans mon views.py, le manipuler, puis utiliser ces données dans d'autres vues .Saisir et manipuler des données utilisateur sans modèles

Je n'ai pas besoin de ces données stockées dans une base de données, car je ne ferai pas référence à nouveau, et je veux garder cela aussi léger que possible.

Actuellement, j'essaie d'extraire des données du site de Fantasy Football d'Espn en utilisant la bibliothèque python espnff. Ma page d'accueil se compose d'une zone de champ de texte et d'un bouton de soumission (Think of google.com).

J'ai des fonctions configurées qui vont parcourir une URL spéciale telle que http://games.espn.com/ffl/clubhouse?leagueId=123456 pour récupérer le leagueID, d'où j'utilise espnff pour obtenir plus d'informations sur cette ligue.

Mon cas d'utilisation idéal est que quelqu'un vienne sur mon site, copie et colle son URL de ligue comme celle ci-dessus, clique sur "soumettre" puis apporte à https://example.com/ {{leagueID}/qui affichera différentes informations.

Je n'ai pas trouvé un moyen de le faire sans soumettre l'entrée de l'utilisateur à un modèle. Est-il possible d'éviter d'utiliser la base de données? Si c'est le cas, comment?

+0

vous pouvez utiliser la mise en cache. Redis/Memcache. –

Répondre

0

Je ne suis pas sûr d'avoir bien compris, mais ce que vous essayez de faire peut facilement être fait sans utiliser aucun modèle/base de données ou tout autre type de stockage persistant.

L'utilisateur fait valoir que les informations en utilisant le formulaire, vous prenez l'URL de l'objet request dans votre vue, analyser l'URL pour obtenir le league_id puis rediriger l'utilisateur vers /{league_id}.

Ensuite, dans cette vue, vous rassemblez le paramètre league_id (à partir de l'URL), utilisez la bibliothèque (espnff) pour extraire les données avec cet ID et ensuite afficher le modèle avec ces données.

Par exemple, la mise en œuvre serait quelque chose dans ces lignes:

Faire un formulaire dans votre modèle html:

<form method="post" action="/"> 
    {% csrf_token %} 
    <input type="text" name="league_url"/> 
    <input type="submit" value="Submit" /> 
</form> 

dans urls.py:

url(r'^$', index_view, name="index"), 
url(r'^(?P<league_id>[0-9]+)$', league_view, name="league_view") 

dans les vues. py:

def index_view(request): 
    if request.method == 'POST': 
     league_url = request.POST.get('league_url', None) 
     # Your code to parse the URL and extract the ID 
     return HttpResponseRedirect('/{}'.format(league_id)) 
    else: 
     # render form template 

def league_view(request, league_id): 
    # your code here using the league_id 
    # and render the page with data 

(Je n'ai pas testé ce code, je l'ai juste écrit rapidement comme exemple du flux)

+0

C'est exactement ce que je veux faire. Pouvez-vous fournir plus de détails sur la façon de récupérer l'URL à partir de l'entrée de l'utilisateur? –

+0

@ZacharyBloss fait, ajouté quelques extraits à titre d'exemple. – dethos

0

La documentation de django décrit de façon assez détaillée comment faire de la mise en cache avec django. Vous trouverez la documentation sur la façon de set that up here

Une fois qu'il a été mis en place que vous utilisez simplement le cache de la manière suivante

from django.core.cache import cache 

cache.set('my_key', 'my_value', 60) # number is in seconds 
value = cache.get('my_key') 

Vous pouvez fournir des dictionnaires et comme les valeurs. Le cadre de mise en cache va sérialiser cela pour vous en utilisant pickle.