2017-10-20 47 views
0

我不確定這是否可能,但我想抓住用戶的輸入,將其拖入我的views.py中,操作它,然後在其他視圖中使用該數據。抓取並操作用戶數據,而不使用模型

我不需要將這些數據存儲在數據庫中,因爲我不會再引用它,並且我想盡可能保持輕量級。

目前,我試圖從espn的幻想足球網站使用python庫espnff拉數據。我的主頁由文本框和提交按鈕組成(Think of google.com)。

我設置了一些功能,可以通過諸如http://games.espn.com/ffl/clubhouse?leagueId=123456之類的espn url來獲取聯盟ID,從那裏我可以利用espnff獲取更多關於該聯盟的信息。

我的理想用例是有人來到我的網站,複製並粘貼他們的聯賽網址,點擊提交,然後將他們帶到https://example.com/ {{leagueID} /這將顯示我收集的不同信息。

我還沒有找到一種方法來執行此操作,而無需將用戶輸入提交給模型。有可能避免使用數據庫?如果是這樣如何?

+0

您可以使用緩存。 Redis的/內存緩存。 –

回答

0

不知道我的理解是否正確,但是您要做的事情可以輕鬆完成,無需使用任何模型/數據庫或任何其他類型的持久性存儲。

用戶提交使用形式的信息,你搶從request對象的網址在您看來,解析URL,以獲得league_id,然後將用戶重定向到/{league_id}

然後在該視圖中,您收集league_id參數(來自url),使用庫(espnff)獲取具有該id的數據,然後使用該數據呈現模板。

例如,實施將東西在這幾行:

做一個形式,你的HTML模板:

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

在urls.py:

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

的意見。 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 

(我沒有測試過那個代碼,我只是把它寫成流程的一個例子)

+0

這正是我想要做的。你能提供一些關於如何從用戶輸入中獲取URL的更多細節嗎? –

+0

@ZacharyBloss完成後,添加了一些片段作爲例子。 – dethos

0

django文檔中介紹瞭如何使用django進行緩存。一旦它被設置只需使用緩存通過以下方式

from django.core.cache import cache 

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

您可以提供詞典,如價值觀,你可以找到關於如何set that up here

的文檔。緩存框架將使用pickle爲您序列化。