django "TypeError: object of type'type'has no len()"문제 해결
django의 웹 페이지에서 다음 오류가 발생했습니다.
Forbidden (403)
CSRF verification failed. Request aborted.
Help
Reason given for failure:
CSRF token missing or incorrect.
In general, this can occur when there is a genuine Cross Site Request Forgery, or when Django's CSRF mechanism has not been used correctly. For POST forms, you need to ensure:
Your browser is accepting cookies.
The view function passes a request to the template's render method.
In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.
If you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those that accept the POST data.
The form has a valid CSRF token. After logging in in another browser tab or hitting the back button after a login, you may need to reload the page with the form, because the token is rotated after a login.
You're seeing the help section of this page because you have DEBUG = True in your Django settings file. Change that to False, and only the initial error message will be displayed.
You can customize this page using the CSRF_FAILURE_VIEW setting.
해결 방법 1:
django 프로젝트 파일의 setting.py의'django.middleware.csrf.CsrfView Middleware'라는 구절을 주석해 주십시오.
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
해결 방법2:django 프로젝트의 app 파일의views.py 차폐 장식기 추가.
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
예를 들어 앱의views.py에서 시작하는 코드는 다음과 같습니다.
from django.shortcuts import render
from django import forms
from django.template import RequestContext
from django.template.loader import get_template
from django.core.paginator import Paginator
from django.core.urlresolvers import reverse
from django.http import HttpResponse, HttpResponseRedirect
from depotapp.models import Product
# Create your views here.
def create_product(request):
if request.method == 'GET':
return render(request, 'create_product.html')
if request.method == 'POST':
title = request.POST.get('title')
description = request.POST.get('description')
image = request.POST.get('image')
price = request.POST.get('price')
Product.objects.create(
title=title,
description=description,
image_url=image,
price=price
)
return render(request, 'create_product.html')
……
장식기 뒤의 코드를 차단한 후:
from django.shortcuts import render
from django import forms
from django.template import RequestContext
from django.template.loader import get_template
from django.core.paginator import Paginator
from django.core.urlresolvers import reverse
from django.http import HttpResponse, HttpResponseRedirect
from depotapp.models import Product
from django.views.decorators.csrf import csrf_exempt
# Create your views here.
@csrf_exempt
def create_product(request):
if request.method == 'GET':
return render(request, 'create_product.html')
if request.method == 'POST':
title = request.POST.get('title')
description = request.POST.get('description')
image = request.POST.get('image')
price = request.POST.get('price')
Product.objects.create(
title=title,
description=description,
image_url=image,
price=price
)
return render(request, 'create_product.html')
……
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.