2017-08-23 13 views
1

ログインすると、セッションにユーザー名を保存します。 しかし、ときに私が私のviews.pyにセッションを設定しますが、以下のエラーが出ます:プロジェクトでdjangoのセッションを使用できません

Internal Server Error: /cookie/login1/ 
Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/core/handlers/exception.py", line 41, in inner 
    response = get_response(request) 
    File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/utils/deprecation.py", line 142, in __call__ 
    response = self.process_response(request, response) 
    File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/contrib/sessions/middleware.py", line 58, in process_response 
    request.session.save() 
    File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/contrib/sessions/backends/db.py", line 81, in save 
    return self.create() 
    File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/contrib/sessions/backends/db.py", line 50, in create 
    self._session_key = self._get_new_session_key() 
    File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/contrib/sessions/backends/base.py", line 164, in _get_new_session_key 
    if not self.exists(session_key): 
    File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/contrib/sessions/backends/db.py", line 46, in exists 
    return self.model.objects.filter(session_key=session_key).exists() 
    File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/db/models/query.py", line 670, in exists 
    return self.query.has_results(using=self.db) 
    File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/db/models/sql/query.py", line 517, in has_results 
    return compiler.has_results() 
    File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/db/models/sql/compiler.py", line 845, in has_results 
    return bool(self.execute_sql(SINGLE)) 
    File "/Library/Python/2.7/site-packages/Django-1.11.2-py2.7.egg/django/db/models/sql/compiler.py", line 886, in execute_sql 
    raise original_exception 
OperationalError: no such table: django_session 

を私は自分のコードをテストし、理由を見つけることができませんでした。 urls.py

views.py
urlpatterns = [ 

    ... 
    url(r'^login1/$', views.login1), 
    url(r'^index1/$', views.index1), 
] 

、私は2つの方法があり、login1成功ならば、私はindex1.htmlにリダイレクトします:

def login1(request): 
    if request.method == 'GET': 
     return render(request, 'cookie/login1.html') 
    elif request.method == 'POST': 

     username = request.POST.get('username') 
     pwd = request.POST.get('pwd') 

     print ('username:'+username, 'pwd:'+pwd) 

     if username == 'root' and pwd == '123': 

      request.session['username'] = username 
      return redirect('/cookie/index1/') 
     else: 
      return render(request, 'cookie/login1.html') 

def index1(request): 

    return HttpResponse('index1') 
+1

セッションでの店舗名が 'request.user'だけで正常に動作しますなぜ?また、 '' django.contrib.sessions ''を 'INSTALLED_APPS'設定に追加する必要があります。 – wmorrell

+0

settings.pyはデフォルトでそれを持っています。 – 244boy

+0

次に、@ aircraftが投稿した内容に従って、セッション用にデフォルトのデータベースストレージを使用する場合は、移行を実行する必要があります。 – wmorrell

答えて

1

あなたのトレースバックから:

OperationalError: no such table: django_session

データベースには今すぐdjango_sessionテーブルがありませんが、あなたはそのテーブルにセッション、Djangoの店のセッションを設定することはできません、あなたはそれの一般的な最初のターミナルで怒鳴るのコマンドを実行する必要があります

python manage.py makemigrations 
python manage.py migrate 
関連する問題