我是Django的新手,因此我會提出幾個問題。Django中的重度計算
我正在關注基於此的教程。
http://hplgit.github.io/web4sciapps/doc/pub/._web4sa_django006.html
他們有一個計算類,它是所謂的views.py進行計算。
計算類
from numpy import exp, cos, linspace
import matplotlib.pyplot as plt
import os, time, glob
def damped_vibrations(t, A, b, w):
return A*exp(-b*t)*cos(w*t)
def compute(A, b, w, T, resolution=500):
"""Return filename of plot of the damped_vibration function."""
print os.getcwd()
t = linspace(0, T, resolution+1)
y = damped_vibrations(t, A, b, w)
plt.figure() # needed to avoid adding curves in plot
plt.plot(t, y)
plt.title('A=%g, b=%g, w=%g' % (A, b, w))
if not os.path.isdir('static'):
os.mkdir('static')
else:
# Remove old plot files
for filename in glob.glob(os.path.join('static', '*.png')):
os.remove(filename)
# Use time since Jan 1, 1970 in filename in order make
# a unique filename that the browser has not chached
plotfile = os.path.join('static', str(time.time()) + '.png')
plt.savefig(plotfile)
return plotfile
if __name__ == '__main__':
print compute(1, 0.1, 1, 20)
views.py
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.http import HttpResponse
from models import InputForm
from compute import compute
import os
def index(request):
os.chdir(os.path.dirname(__file__))
result = None
if request.method == 'POST':
form = InputForm(request.POST)
if form.is_valid():
form2 = form.save(commit=False)
result = compute(form2.A, form2.b, form2.w, form2.T)
result = result.replace('static/', '')
else:
form = InputForm()
return render_to_response('vib1.html',
{'form': form,
'result': result,
}, context_instance=RequestContext(request))
坦率地說我也不太清楚,如果這是這樣做的正確方法。據我所知,視圖呈現在客戶端計算機上。但是,如果需要大量資源,則應該在服務器端完成。我在這裏弄錯了什麼?
或者整個事情應該如何呢?
錯誤,客戶端計算機上未處理視圖。 – Sayse
我投票結束這個問題作爲題外話,因爲它是基於一個不正確的假設。 –
我不覺得downvote是這裏的解決方案。我們所有人都是初學者,這是基於混淆命名約定的一個誠實的錯誤。 –