【问题标题】:Django-Upload file from HTML form to specific directory without using Django FormsDjango-将文件从 HTML 表单上传到特定目录而不使用 Django 表单
【发布时间】:2023-03-03 10:42:01
【问题描述】:

我可以从管理面板上传文件和图像,它会在指定的目录中查找,但是当我从 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.url:

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>

我的意见.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('/')          

我做错了什么?

【问题讨论】:

    标签: django django-file-upload


    【解决方案1】:

    将 encType 属性添加到表单中以允许使用 POST 发送图像数据。

    <form class="addForm" encType="multipart/form-data" method="POST" action="/files/addfile/">
    

    【讨论】:

    • 请在代码中添加解释,以便理解如何解决问题。
    • 起初我很抱歉我有课所以我没有写消息。例如,您有帖子有一个表格。当您上传表格时,表格中的图片未显示在数据库中。使用 Enctype 。您可以在数据库中上传您想要的图片
    • 可以在HERE找到回答问题的首选方式的解释
    【解决方案2】:

    看看你的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>
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 2018-01-25
      • 2013-03-18
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多