当我尝试向http://localhost/upload-avatar/
发送POST请求时,我得到了两个错误
404(未找到)
语法错误:意外的标记“|”,“<!DOCTYPE“不是有效的JSON。
我想知道是什么原因以及如何解决这个问题。有人怀疑问题出在Apache上。我用的是wamp。在使用和编写wamp代码一段时间后,我连接了Django。配置Apache。我还检查了路由设置和服务器启动,但问题仍然存在。我请求帮助识别和消除此问题。感谢您的评分
代码:
JS:
PhotoUpload.addEventListener('change', function() {
const file = this.files[0];
if (file) {
const reader = new FileReader();
reader.addEventListener('load', function() {
photo.setAttribute('src', this.result);
photo.classList.remove('alt-centered');
PhotoUpload.style.display = 'none';
const formData = new FormData();
formData.append('photo', file);
fetch('/upload-avatar/', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Error:', error);
});
});
reader.readAsDataURL(file);
} else {
photo.setAttribute('src', '#');
photo.classList.add('alt-centered');
PhotoUpload.style.display = 'block';
}
});
};
views.py
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from django.core.files.storage import default_storage
from django.http import JsonResponse
@csrf_exempt
def upload_avatar(request):
if request.method == 'POST' and request.FILES.get('photo'):
photo = request.FILES['photo']
# Сохраните фотографию с помощью default_storage
filename = default_storage.save('photos/' + photo.name, photo)
return JsonResponse({'message': f'Photo uploaded successfully: {filename}'})
return JsonResponse({'error': 'An error occurred while uploading the photo.'})
urls.py
from django.contrib import admin
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
from PhotoSave import views
urlpatterns = [
path('admin/', admin.site.urls),
path('upload-avatar/', views.upload_avatar, name='upload_avatar'),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
在Apache文件(httpd.conf)中,我只更改了
<Directory "${SRVROOT}/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<Directory "${INSTALL_DIR}/www/Chat/MediaSave">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
并添加了LoadModule wsgi_module modules/mod_wsgi.so
行
1条答案
按热度按时间oxf4rvwz1#
你从视图中得到一个Django错误页面。我的建议是,捕获错误并将异常消息发送给客户端。在GET视图的情况下,我建议你在浏览器中手动调用它,但我知道手动调用POST视图很困难(你应该编写一个调用此视图的表单)。