私はforms.pyを使用してファイルをインポートしようとしています。このコードは、私が別のモデルで使用され、それが働いていたが、今回はそれが私にこのエラーを与える同じコードです:MultiValueDictKeyError Django 1.8
MultiValueDictKeyError at /importraw
Exception Value: "u'rawname'"
これらは、あなたが知っておく必要があるコードの抜粋です:
Views.py
def importraw(request):
form = UploadRaw(request.POST, request.FILES)
if form.is_valid():
raw = Raw(title=request.POST['rawname'], file='raw_files/' + request.POST['file'])
raw.save()
handle_uploaded_raw(request.FILES["file"], request.POST["name"])
raw.save()
return redirect('/importations')
Urls.py:
url(r'^importraw$', views.importraw),
Forms.py:
class UploadRaw(forms.Form):
class Meta:
name = forms.CharField(max_length=120)
file = forms.FileField()
Models.py:
class Raw(models.Model):
title = models.CharField(max_length=200)
file = models.FileField(upload_to='raw_files')
uploaded_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField(auto_now = True)
def __str__(self):
return self.name
Index.htmlと
<!--IMPORT-->
<div class="col-md-12">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Importer un fichier brut</h3>
</div>
<div class="panel-body">
<form class="form-horizontal" action="/importraw", method="post">
{% csrf_token %}
<fieldset>
<div class="form-group">
<label for="name" class="col-lg-4 control-label">Structure</label>
<div class="col-lg-6">
<select name="id" id="id" class="struct form-control">
{% for structure in structures %}
<option value="{{ structure.name }}">{{ structure }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="form-group">
<label for="file" class="col-lg-4 control-label">Nom du fichier brut</label>
<div class="col-lg-6">
<input type="text" name="rawname" id="rawname" class="form-control">
</div>
</div>
<div class="form-group">
<label for="file" class="col-lg-5 control-label">Fichier brut</label>
<div class="col-lg-6">
<input type="file" name="file" id="file">
</div>
</div>
<div class="form-group">
<div class="col-lg-10 col-lg-offset-2" align="center">
<button type="submit" value="Create" class="btn btn-primary">Importer</button>
</div>
</div>
</fieldset>
</form>
</div>
</div>
</div>
<!--END-IMPORT-->
私は取得しています正確なエラーについての詳細を知るためには、以下のトレースバックを見て取りください
を**Environment:
Request Method: POST
Request URL: http://localhost:8000/importraw
Django Version: 1.8
Python Version: 2.7.13
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'backoffice']
Installed 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.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/home/kaiss/.local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/kaiss/Desktop/projet2/backoffice/views.py" in importraw
232. raw = Raw(title=request.POST['rawname'], file='raw_files/' + request.POST['file'])
File "/home/kaiss/.local/lib/python2.7/site-packages/django/utils/datastructures.py" in __getitem__
322. raise MultiValueDictKeyError(repr(key))
Exception Type: MultiValueDictKeyError at /importraw
Exception Value: "u'rawname'"**
私はPython 2.7.13とDjango 1.8を使用しています。
ありがとうございました!
UploadRawの定義は何ですか?なぜ 'request.POST'に直接アクセスしていますか? –
申し訳ございませんが、form.pyは忘れてしまいました。私は私の質問を更新します。 –