我可以从管理控制台上载文件和图像,它会在指定目录中查找,但是当我从HTML表单中查找时,文件以外的所有内容都会保存。在Django管理面板中,文件被保存到媒体文件夹中,我可以从模板访问它。但是当我尝试从模板中的Html表单上载时,它没有被上载,但其他所有内容(例如注释,类别和状态)会。
我的模特:
from django.db import models
from datetime import datetime
class File(models.Model):
title=models.CharField(max_length=200)
document=models.FileField(upload_to='media')
comments=models.TextField()
uploaded_at=models.DateTimeField(default=datetime.now,blank=True)
category=models.CharField(max_length=200,default="Education")
status=models.CharField(max_length=200,default="Completed")
def __str__(self):
return self.title
我的app.urls:
from django.conf.urls import url,include
from . import views
urlpatterns=[
url(r'^$',views.index,name="index"),
url(r'^search/$',views.search,name="search"),
url(r'^searchdate/$',views.searchdate,name="searchdate"),
url(r'^addfile/$',views.addfile,name="addfile"),
url(r'^delete-entry/(?P<pk>\d+)$', views.DeleteView,
name='delete_view'),
]
我的网址:
from django.contrib import admin
from django.urls import path
from django.conf.urls import url,include
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf import settings
urlpatterns = [
url(r'admin/', admin.site.urls),
url(r'^$',include('domsapp.urls')),
url(r'^files/',include('domsapp.urls')),
]
urlpatterns+=staticfiles_urlpatterns()
urlpatterns+=static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
我的设置:
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
我的html表单:
<form class="addForm" method="POST" action="/files/addfile/">
{% csrf_token %}
<input type="file" name="fileadded" id="fileinput" placeholder="Choose File">
<hr>
<label id="#titleLabel">Title</label>
<hr>
<input type="textarea" name="title" placeholder="Enter Title" class="addinput" required>
<hr>
<label id="#commentLabel">Comments</label>
<hr>
<textarea name="comments" class="addinput comment-input" required=""></textarea>
<hr>
<label id="#categoryLabel">Category</label>
<select name="category" class="category-class" required>
<option>General</option>
<option>Education</option>
<option>Ward</option>
<option>District</option>
</select>
<hr>
<label id="#status">Work Status</label>
<select name="status" class="status-class" required>
<option>Completed</option>
<option>Pending</option>
</select>
<hr>
<button id="addfileBtn" type="submit">Add File</button>
</form>
我的views.py
def addfile(request):
if(request.method == 'POST'):
title=request.POST['title']
comments=request.POST['comments']
fileadded=request.POST['fileadded']
category=request.POST['category']
status=request.POST['status']
fileobj=File(title=title,comments=comments,document=fileadded(),category=category,status=status)
fileobj.save();
return redirect('/')
我在做什么错了?
答案 0 :(得分:1)
将encType属性添加到表单,以允许通过POST发送图像数据。
<form class="addForm" encType="multipart/form-data" method="POST" action="/files/addfile/">
答案 1 :(得分:0)
看到问题在于您的html代码,如果要上传媒体文件,则应在表单标签中添加enctype="multipart/form-data"
,请尝试此操作-
<form class="addForm" method="POST" action="/files/addfile/" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="fileadded" id="fileinput" placeholder="Choose File">
<hr>
<label id="#titleLabel">Title</label>
<hr>
<input type="textarea" name="title" placeholder="Enter Title" class="addinput" required>
<hr>
<label id="#commentLabel">Comments</label>
<hr>
<textarea name="comments" class="addinput comment-input" required=""></textarea>
<hr>
<label id="#categoryLabel">Category</label>
<select name="category" class="category-class" required>
<option>General</option>
<option>Education</option>
<option>Ward</option>
<option>District</option>
</select>
<hr>
<label id="#status">Work Status</label>
<select name="status" class="status-class" required>
<option>Completed</option>
<option>Pending</option>
</select>
<hr>
<button id="addfileBtn" type="submit">Add File</button>
</form>
希望这会有所帮助。