首页 > 解决方案 > /no such table 处的 OperationalError:公共服务器上的 django_session 错误,站点在本地服务器上工作正常

问题描述

我正在尝试将从表单获取的数据发送到另一个视图页面以进行处理。我正在使用会话来发送该数据。它在本地主机上工作正常,数据发送和接收成功,但是,在公共服务器上它崩溃了。我发现了一些关于同一问题的帖子,但他们的问题主要与数据库集成有关,而这里不是这种情况。这是导致其内部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

标签: pythondjangowebserver

解决方案


我不确定您是否正确设置了会话中间件。

首先,请检查您是否正确设置了 sessionmiddleware。MIDDLEWARE_CLASSES 应该有

'django.contrib.sessions.middleware.SessionMiddleware'

并将其添加到 django 应用程序中。INSTALLED_APPS 应该有

'django.contrib.sessions'

并再次生成迁移/迁移应用程序。

python manage.py makemigrations

python manage.py 迁移


推荐阅读