Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 上传带有FileField和nginx的文件只是抛出错误?_Python_Django_Nginx_Uwsgi - Fatal编程技术网

Python 上传带有FileField和nginx的文件只是抛出错误?

Python 上传带有FileField和nginx的文件只是抛出错误?,python,django,nginx,uwsgi,Python,Django,Nginx,Uwsgi,我是Django的新手,我正在学习如何使用Django处理上传文件,我对文档做了同样的事情,但我的nginx只是抛出错误 以下是我的视图.py: @csrf_exempt def upload_view(request): if request.method == 'POST': form = UploadItemForm(request.POST, request.FILES) if form.is_valid(): return

我是Django的新手,我正在学习如何使用Django处理上传文件,我对文档做了同样的事情,但我的nginx只是抛出错误

以下是我的视图.py:

@csrf_exempt
def upload_view(request):
    if request.method == 'POST':
        form = UploadItemForm(request.POST, request.FILES)
        if form.is_valid():
            return HttpResponse('successfully uploaded')
        else:
            return HttpResponse('upload failed')
else:
    if request.user.is_authenticated():
        form = UploadItemForm()
        return render(request, 
            'design/upload.html', 
            {'form': form,
            'username': request.user.username})
    else:
        return HttpResponse("you have to login")
model.py

class Item(models.Model):
    name = models.CharField(max_length = 100)
    description = models.TextField(max_length = 1000)
    uploadfile = models.FileField()

class UploadItemForm(ModelForm):
    class Meta:
        model = Item
我的模板:

<form enctype="multipart/form-data" method="post" action="/design/">
 {% csrf_token %}
 {{ form.as_p }}

<input type="submit" value="upload" />
</form>
nginx说

抱歉,您正在查找的页面当前不可用。请 请稍后再试


我使用nginx+uwsgi+django,那么它与uwsgi和nginx设置有关吗?

啊,我解决了它。不知什么原因。看起来,当请求大小超过某个阈值时,nginx会将数据放在client\u body\u temp/目录中,出于某种原因(我不知道),我的设置中的这个目录是root只读的????更改权限,然后一切正常

有关其他信息:

client_max_body_size 4M; //4mb
default_type text/plain; //file format
以下是功能列表:


也请阅读本论坛:

他们没有文档吗?我记得默认格式是text/plain,所以你需要为你的格式定义它。我没有找到默认格式的文档,你能给我一些提示吗?我怀疑更改格式是否可行,因为csv文件也失败了……nginx中可能有一个配置选项来控制它将接受的POST数据的最大大小,大概是为了防止人们上传大文件作为拒绝服务攻击的一部分。检查文件中的nginx。啊,我解决了。不知什么原因。看起来,当请求大小超过某个阈值时,nginx会将数据放在client\u body\u temp/目录中,出于某种原因(我不知道),我的设置中的这个目录是root只读的????更改权限,然后一切正常fine@Aya我怀疑在一开始,但即使我将其设置为100MB,也没有任何效果…所以只需查看uwsgi和nginx的错误日志。最后在nginx中找到密钥。。。
client_max_body_size 4M; //4mb
default_type text/plain; //file format