このチュートリアルに従って Uploadify を使用して Django にファイルをアップロードしようとしています。すべての手順を適切に実行しました。それに加えて、アップロードされているファイルに関する情報を保存するモデルを作成しました。
私のテンプレートにはこれが含まれています
<script type="text/javascript" src="{{ STATIC_URL }}uploadify/swfobject.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}uploadify/jquery.uploadify.v2.1.4.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#file_upload').uploadify({
'uploader' : '{{ STATIC_URL }}uploadify/uploadify.swf',
'script' : '{% url upload_file %}',
'cancelImg' : '{{ STATIC_URL }}uploadify/cancel.png',
'auto' : true,
'multi' : true,
'fileExt' : '*.doc;*.docx;*.pdf',
'fileDesc' : 'Upload Docs',
'queueID' : 'file_upload_queue',
'removeCompleted': false,
});
});
</script>
<h2 id="smallHeading"> Upload your Documents </h2>
<input id="file_upload" type="file" name="Filedata" />
<a href="javascript:$('#file_upload').uploadifyUpload();">Upload Files</a>
私のurl.pyファイルにはこの行が含まれています
url(r'^upload/$', 'userprofile.views.upload_file', name='upload_file'),
そしてビューは
@csrf_exempt
def upload_file(request):
if request.method == "POST":
upload_file = request.FILES['Filedata']
upload_instance = Uploads.objects.create(creator = request.user, uploaded_on = datetime.datetime.now())
upload_instance.file.save(upload_file.name,upload_file)
upload_instance.save()
response = HttpResponse()
response.write("%s\r\n" % upload.name)
return response
そして私のmodels.py
含む
def get_file_path(instance, filename):
return os.path.join('userprofiles', str(instance.creator.id), filename)
class Uploads(models.Model):
file = models.FileField(upload_to=get_file_path)
creator = models.ForeignKey(User)
uploaded_on = models.DateTimeField()
しかし、ここでは何も起こっていません。私が得るのはアップロードボタンだけです。ファイルを選択しますが、何も起こりません。何が起こっているのかを知るのを手伝ってくれる人はいますか? script
解雇されていないようです。以前はビューにエラーがありましたが、エラーは発生しなかったため、これを知っています。
どんな助けでも大歓迎です。
編集:
firebug
コンソールには何も表示されず、パネルにもリクエストnet
は表示されませんが、ファイルアップロードの POST リクエストと応答が表示されます。私はなぜそれが必要なのですか?POST
django debugger
403
csrf_exempt
forbidden
解決策:私はついに問題を解決しました。403 エラーについては、このリンクから興味深いことがわかりました。ビューにデコレータcsrf_exempt
があり、そのビューに 404 エラーがある場合、django は 403 エラーを表示します。
実際の問題は、最初にリンクが間違っていたため、修正すると 403 エラーが発生しなくなりましたが、500 エラーが発生し始めました。これは、ビューに何か問題があることを意味していました。また、uploadufy は firebug に何も記録しないため、ビュー内の行をステップ実行してデバッグする必要がありました。
uploadify
スクリプトによって送信されたリクエスト オブジェクトが完了していないようでcreator = request.user
、オブジェクトの作成中の行でエラーが発生していました。この行を除いて、上記のコードは完全に機能します。