首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:上传和处理图像(CSRF令牌丢失或不正确)的问题

Django:上传和处理图像(CSRF令牌丢失或不正确)的问题
EN

Stack Overflow用户
提问于 2015-10-19 14:22:51
回答 1查看 839关注 0票数 0

我只是想和Django一起练习。我试着做了一个简单的应用程序,让你上传一个图像,并返回像素化的版本。我有两个视图:一个显示表单,另一个处理图像并返回结果。问题是提出了“禁止(403)”,而不是结果。失败原因: CSRF令牌丢失或不正确。

urls.py

代码语言:javascript
复制
from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^result/$', views.pixelate, name='pixelate')
]

views.py

代码语言:javascript
复制
from django.http import HttpResponse
from django.shortcuts import render_to_response
from .forms import UploadImageForm
from .pixelate import pixelate_image

def index(request):
    form = UploadImageForm()
    return render_to_response('pixelate/index.html', {'form': form})

def pixelate(request):
    form = UploadImageForm(request.POST, request.FILES)
    if form.is_valid():
        response = HttpResponse(content_type='image/png')
        response['Content-Disposition'] = 'filename="image.png"'

        img = pixelate_image(request.FILES['image'])
        response.write(img)
        return response

pixelate.py

代码语言:javascript
复制
from PIL import Image
from io import BytesIO

def pixelate_image(img, pixelSize=9):
    buffer = BytesIO()
    p = Image(buffer)
    image = p.open(img)
    image = image.resize((image.size[0]/pixelSize, image.size[1]/pixelSize), Image.NEAREST)
    image = image.resize((image.size[0]*pixelSize, image.size[1]*pixelSize), Image.NEAREST)
    image.save()
    final_image = buffer.getvalue()
    buffer.close()
    return final_image

forms.py

代码语言:javascript
复制
from django import forms

class UploadImageForm(forms.Form):
    image = forms.ImageField()

index.html

代码语言:javascript
复制
<form action="{% url 'pixelate:pixelate' %}" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit" />
</form>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-19 14:26:56

index.html

代码语言:javascript
复制
<form action="{% url 'pixelate:pixelate' %}" method="post"  enctype="multipart/form-data">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit" />
</form>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33216939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档