Errang Genevre
asked on
How to upload a file in Django?
Hello,
I am trying to find a simple way to upload files in Django. I would like to be able to:
- Store them on the file system
- or Pass the file to a method
I've tried several tutorials like this one: http://zoia.org/2007/07/29/django-file-upload/
But they didn't help much, they either didn't work at all; or they gave me problems saying the CSRF token was missing (even though I had the {% csrf_token %} in between the form tags <form> </form>).
The other problem I'm having is that I seem to be losing the session when I navigate to the new form...
I tested this theory by inserting this bit of code into the html file
The above code returns "True" when I login on the index page; but I do not see any output when I navigate to the new form.
I am open to do this in the regular Admin area in Django, or a regular page outside; which can only be accessed by Admins.
Appreciate any help on this!
I am trying to find a simple way to upload files in Django. I would like to be able to:
- Store them on the file system
- or Pass the file to a method
I've tried several tutorials like this one: http://zoia.org/2007/07/29/django-file-upload/
But they didn't help much, they either didn't work at all; or they gave me problems saying the CSRF token was missing (even though I had the {% csrf_token %} in between the form tags <form> </form>).
The other problem I'm having is that I seem to be losing the session when I navigate to the new form...
I tested this theory by inserting this bit of code into the html file
<p> {{ user.is_superuser }} </p>
The above code returns "True" when I login on the index page; but I do not see any output when I navigate to the new form.
I am open to do this in the regular Admin area in Django, or a regular page outside; which can only be accessed by Admins.
Appreciate any help on this!
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Figured out why the session wasn't transferring; I was not returning the 'request' object to the new page.
Still trying to figure out how to do the file upload.
Still trying to figure out how to do the file upload.
ASKER
Ok, I finally got the file upload to work too; I can:
- Process the data within the file and allow the user to download the file
- Intermediary step to processing the data; having slight problems passing the request to another method.
- Store the file in the media folder.
Is there a cleaner way to do this? And also, I am planning to associate each file to a quiz; so would it be more efficient to store it directly on the database; or have the database store a file name, and get the file from the file system?
Appreciate any advice on this!
- Process the data within the file and allow the user to download the file
- Intermediary step to processing the data; having slight problems passing the request to another method.
- Store the file in the media folder.
Is there a cleaner way to do this? And also, I am planning to associate each file to a quiz; so would it be more efficient to store it directly on the database; or have the database store a file name, and get the file from the file system?
def create_quiz_form(request):
if request.method == 'POST':
form = UploadQuizData(request.POST, request.FILES)
if form.is_valid():
response = HttpResponse(content_type='text/plain')
response["Content-Disposition"]= "attachment; filename=quiz.txt"
fd = open('%s/%s' % (MEDIA_ROOT, 'THIS_IS_THE_FILE'), 'wb')
create_quiz(request, request.FILES['file']) # This is not working
for line in request.FILES['file'].read():
response.write(line)
fd.write(request.FILES['file'].name)
fd.close()
return response
else:
form = UploadQuizData()
data = {'form': form}
return render(request, 'create_quiz_form.html', data)
Appreciate any advice on this!
aplogies I didn't help you more. I was very busy the last weeks.
I'm a little embarassed that you gave me points for my answer.
Well still quite busy, but here some advice:
You can read a file from a request object only once.
But you could read / write the file from a function if you pass the request object.
I would upload the file to the media directory and save it as a FileField in the data base.
following link might give you some ideas:
https://docs.djangoproject.com/en/1.7/topics/http/file-uploads/
If you use another Django, then change the version number in the link
I'm a little embarassed that you gave me points for my answer.
Well still quite busy, but here some advice:
You can read a file from a request object only once.
But you could read / write the file from a function if you pass the request object.
I would upload the file to the media directory and save it as a FileField in the data base.
following link might give you some ideas:
https://docs.djangoproject.com/en/1.7/topics/http/file-uploads/
If you use another Django, then change the version number in the link
ASKER
>> You can read a file from a request object only once.
Figured that out after 30 mins of trial and error :)
>> aplogies I didn't help you more. I was very busy the last weeks.
That's fine, I was able to figure it out; but if you do have any spare time, could you please help me out with the question below?
https://www.experts-exchange.com/questions/28621740/How-to-create-a-signup-page-for-a-Django-website.html
I tried using this tutorial: http://www.b-list.org/weblog/2006/sep/02/django-tips-user-registration/
But I get this error: 'module' object has no attribute 'Manipulator'
Figured that out after 30 mins of trial and error :)
>> aplogies I didn't help you more. I was very busy the last weeks.
That's fine, I was able to figure it out; but if you do have any spare time, could you please help me out with the question below?
https://www.experts-exchange.com/questions/28621740/How-to-create-a-signup-page-for-a-Django-website.html
I tried using this tutorial: http://www.b-list.org/weblog/2006/sep/02/django-tips-user-registration/
But I get this error: 'module' object has no attribute 'Manipulator'
ASKER
This is my view:
Open in new window
This is my form:
Open in new window
Its odd; I don't see myself doing anything different from any of the other methods I have.