我正在尝试将从表单获取的数据发送到另一个视图页面进行处理。我正在使用会话发送该数据。它在本地主机上运行良好,可以成功发送和接收数据,但是在崩溃的公共服务器上。我发现了几篇关于同一问题的文章,但它们的问题主要与数据库集成有关,在这里不是这种情况。 这是导致错误的代码,其内部views.py:
from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.templatetags.static import static
from plots.forms import plotform
from django.http import JsonResponse
#from rest_framework.views import APIView
#from rest_framework.response import Response
import numpy as np
import csv
import math
import json
def plots2(request):
if request.method == 'POST':
form = plotform(request.POST)
if form.is_valid():
frequency_min = form.cleaned_data['frequency_min']
frequency_max = form.cleaned_data['frequency_max']
distance = form.cleaned_data['distance']
humidity = form.cleaned_data['humidity']
temp = form.cleaned_data['temp']
request.session['frequency_min'] = frequency_min
request.session['frequency_max'] = frequency_max
request.session['distance'] = distance
request.session['humidity'] = humidity
request.session['temp'] = temp
return redirect('plots/')
form = plotform() #includes the form inside plots.html
#render(request, 'plots/plots2.html', {'form':form})
#return redirect(request.POST.get('next','plots/'))
#return redirect('plots/plots')
return render(request, 'plots/plots2.html', {'form':form})
def plots(request):
frequency_min_input = request.session['frequency_min']
frequency_max_input = request.session['frequency_max']
distance_input = request.session['distance']
humidity_input = request.session['humidity']
temperature_input = request.session['temp']
这是我在浏览器上看到的错误:
Request Method: POST
Request URL: http://142.93.51.83/
Django Version: 1.8.7
Exception Type: OperationalError
Exception Value:
no such table: django_session
Exception Location: /usr/lib/python2.7/dist-
packages/django/db/backends/sqlite3/base.py in execute, line 318
Python Executable: /usr/bin/python
Python Version: 2.7.12
Python Path:
['/home/django/django_project',
'/home/django/django_project',
'/usr/bin',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
Server time: Fri, 10 Aug 2018 00:49:07 +0000
答案 0 :(得分:2)
我不确定您是否正确设置了会话中间件。
首先,请检查您是否正确设置了sessionmiddleware。 MIDDLEWARE_CLASSES应该具有
'django.contrib.sessions.middleware.SessionMiddleware'
并将其添加到Django应用。 INSTALLED_APPS应该具有
'django.contrib.sessions'
然后再次生成迁移/迁移应用。
python manage.py makemigrations
python manage.py migration
答案 1 :(得分:0)
已解决:
sudo chmod 777项目目录 sudo chmod 777数据库文件
答案 2 :(得分:0)
运行此
python manage.py migrate
python manage.py makemigrations
答案 3 :(得分:0)
您甚至可能错误地删除了您的数据库文件,或者它可能已移动到目录结构中的其他位置。始终建议保留数据库文件的副本。 坦率地说,这发生在我身上一次。我是在提交我的之后整合别人的代码,但是我替换了她的DB文件,因为它是同名的(db.sqlite3),但是里面没有内容。我得到了同样的错误。 谢天谢地,我保留了一份副本,世界(网站)又恢复了!得救了。