###問題点
adminサイトへログインするときにCSRFエラーが出てしまいます。(普通にサイト自体は見ることができて、フォームの送信時だけエラーになるみたいです。)
今まではPython2を利用していて全く問題なくadminサイトへログインし、記事を投稿できていたのですが、Python3へアップデートしてからはログイン時にエラーが出てしまいます。
settings.pyのMIDDLEWARE_CLASSESに'django.middleware.csrf.CsrfViewMiddleware'があることや、Chromeのクッキーが有効になっていることは確認しました。
他に何か原因と考えられることはないでしょうか?
分かる方がいらっしゃれば教えていただけると幸いです。
###環境
開発環境: cloud9
Python: 3.4.3
ブラウザ: Google Chrome(クッキーは有効)
###発生している問題・エラーメッセージ
アクセス禁止 (403) CSRF検証に失敗したため、リクエストは中断されました。 このメッセージが表示されている理由は、このサイトはフォーム送信時にCSRFクッキーを必須としているためです。このクッキーはセキュリティ上の理由(使用中のブラウザが第三者によってハイジャックされていないことを確認するため)で必要です。 もしブラウザのクッキーを無効に設定しているならば、same-originリクエストのために少なくともこのサイトでは再度有効にしてください。
###該当のソースコード
Python
1admin.py 2 3from django.contrib import admin 4from .models import Post, Tag 5 6admin.site.register(Post) 7admin.site.register(Tag)
Python
1settings.pyから抜粋 2 3MIDDLEWARE_CLASSES = [ 4 'django.middleware.security.SecurityMiddleware', 5 'django.contrib.sessions.middleware.SessionMiddleware', 6 'django.middleware.common.CommonMiddleware', 7 'django.middleware.csrf.CsrfViewMiddleware', 8 'django.contrib.auth.middleware.AuthenticationMiddleware', 9 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 10 'django.contrib.messages.middleware.MessageMiddleware', 11 'django.middleware.clickjacking.XFrameOptionsMiddleware', 12]
Python
1views.py 2 3# -*- coding: utf-8 -*- 4from django.shortcuts import render 5from .models import Post, Tag 6import itertools 7 8def base(request): 9 posts = Post.objects.order_by('?')[:20] 10 tags = Tag.objects.all 11 return render(request, 'blog/base.html', {'posts':posts, 'tags':tags}) 12 13def tag_page(request, tag_name): 14 tag = Tag.objects.get(tag_name=tag_name) 15 posts = tag.post_set.order_by('?') 16 tagparent = tag.tag_set.all 17 tags = Tag.objects.all 18 tagchild = tag.tags.all 19 return render(request, 'blog/base.html', {'tag':tag, 'posts':posts, 'tags':tags, 'tagparent':tagparent, 'tagchild':tagchild}) 20
###補足情報
Python2系から3系へのアップデートは、cloud9のワークスペース上で以下の順に行いました。
エラーが出たのはcloud9上でサーバーを起動して、ブラウザで確認したときです。
Cloud9 > Preferences
Python Support ➔ Python Version: Python3
$ sudo mv /usr/bin/python /usr/bin/python2
$ sudo ln -s /usr/bin/python3 /usr/bin/python
$ sudo pip3 install django
$ python -V バージョンが3.4.3になっていることを確認
あなたの回答
tips
プレビュー