【问题标题】:django file upload issuedjango文件上传问题
【发布时间】:2021-09-11 13:22:51
【问题描述】:

我尝试使用 Django 文件字段上传图片

在我的 models.py 文件中

class Students(models.Model):
    id = models.AutoField(primary_key=True)
    admin = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
    gender = models.CharField(max_length=255)
    profile_picture = models.FileField()
    objects = models.Manager()

在项目的 urls.py 文件中

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('student_management_app.urls')),
]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)+static(settings.STATIC_URL,document_root=settings.STATIC_FILE_ROOT)

在我的 setting.py 文件中,我指定了这样的目录

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

STATIC_URL = '/static/'
STATIC_FILE_ROOT = os.path.join(BASE_DIR, "static")
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

模板页面中,我尝试查看上传到媒体文件夹

的图片
<tbody>
                    {% for student in students %}
                    <tr>
                      <td>{{ student.admin.id }}</td>
                      <td><img src ="{{ student.profile_picture }}" style="width: 100px"></td>
                      <td>{{ student.admin.first_name }}</td>
                      <td>{{ student.admin.last_name }}</td>
                      <td>{{ student.gender }}</td>
                      <td>{{ student.address }}</td>
                      <td>{{ student.admin.email }}</td>
                      <td>{{ student.course_id.course_name}}</td>
                      <td>{{ student.session_start_year }}</td>
                      <td>{{ student.session_end_year }}</td>
                      <td>{{ student.admin.date_joined }}</td>
                      <td>{{ student.admin.last_login }}</td>
                      <td><a href="/EditStudent/{{ student.admin.id }}" class="btn btn-primary">Edit</a></td>
                      <td><a href="/DeleteStudent/{{ student.admin.id }}" class="btn btn-danger">Delete</a></td>
                    </tr>
                    {% endfor %}
                  </tbody>

图片正在完美上传,但我无法为它们提供服务。 right now the template looks like this在模板中查看它们 回溯显示

11/Sep/2021 18:32:30] "GET /media/010040.jpg HTTP/1.1" 302 0
[11/Sep/2021 18:32:30] "GET /media/1580467939054_Anitha.jpg HTTP/1.1" 302 0
[11/Sep/2021 18:32:30] "GET /media/1580467939054_Anitha_mM61nlO.jpg HTTP/1.1" 302 0

**

应用 urls.py

**

from django.conf.urls import url
from django.urls import path
from . import views, AdminViews, StaffViews, StudentViews



urlpatterns = [
    
    path('demo', views.demo, name='demo'),
    path('DoLogin', views.DoLogin, name='DoLogin'),
    path('LoginPage', views.LoginPage, name='LoginPage'),
    path('GetUserDetails', views.GetUserDetails, name='GetUserDetails'),
    path('LogoutUser', views.LogoutUser, name='LogoutUser'),
    path('admin_home', views.admin_home, name='admin_home'),
    path('AddStaff', views.AddStaff, name='AddStaff'),
    path('AddStaffSave', views.AddStaffSave, name='AddStaffSave'),
    path('AddCourse', views.AddCourse, name ='AddCourse'),
    path('AddCourseSave', views.AddCourseSave, name='AddCourseSave'),
    path('AddSubject', views.AddSubject, name ='AddSubject'),
    path('AddSubjectSave', views.AddSubjectSave, name='AddSubjectSave'),
    path('AddStudent', views.AddStudent, name='AddStudent'),
    path('AddStudentSave', views.AddStudentSave, name='AddStudentSave'),
    path('ManageStaff', views.ManageStaff, name='ManageStaff'),
    path('ManageStudent', views.ManageStudent, name='ManageStudent'),
    path('ManageCourse', views.ManageCourse, name='ManageCourse'),
    path('ManageSubject', views.ManageSubject, name='ManageSubject'),
    path('EditStaff/<str:staff_id>', views.EditStaff, name='EditStaff'),
    path('EditStaffSave', views.EditStaffSave, name='EditStaffSave'),
    path('EditStudent/<str:student_id>', views.EditStudent, name='EditStudent'),
    path('EditStudentSave', views.EditStudentSave, name='EditStudentSave'),
    path('EditCourse/<str:course_id>', views.EditCourse, name='EditCourse'),
    path('EditCourseSave', views.EditCourseSave, name='EditCourseSave'),
    path('EditSubject/<str:subject_id>', views.EditSubject, name='EditSubject'),
    path('EditSubjectSave', views.EditSubjectSave, name='EditSubjectSave'),
    path('DeleteStaff/<str:staff_id>', views.DeleteStaff, name='DeleteStaff'),
    path('DeleteStudent/<str:student_id>', views.DeleteStudent, name='DeleteStudent'),
    path('DeleteCourse/<str:course_id>', views.DeleteCourse, name='DeleteCourse'),
    path('DeleteSubject/<str:subject_id>', views.DeleteSubject, name='DeleteSubject'),
    path('StaffHome', views.StaffHome, name='StaffHome'),
    path('StudentHome', views.StudentHome, name='StudentHome'),
]

当我检查源中的模板代码时,图像链接是 显示为 路径显示两个媒体是这个问题

`<td><img src ="/media/media/1580467939054_Anitha_wjltRgu.jpg" style="width: 100px"></td>` 

谁能帮帮我???

【问题讨论】:

  • 您确定图片已上传到media 文件夹吗?如果没有,则显示在创建和表单标签中使用的视图代码

标签: python django templates django-file-upload


【解决方案1】:

你应该使用图片的.url,所以:

&lt;img src="{{ student.profile_picture<strong>.url</strong> }}"&gt;

在您的模板中,您使用 GET 请求编辑/删除项目,为了编辑数据,应该使用 POST、PUT 或 PATCH 请求,并且应该使用 POST 或 DELETE 删除数据条目请求。

【讨论】:

  • @vishnuchandran: 可以分享student_management_appedit问题的网址吗?
  • 当我检查源代码中的模板代码时,图像链接显示为 路径显示两个媒体是这个问题
【解决方案2】:

试试这个:

<td><img src ="{{ student.profile_picture.url }}" style="width: 100px"></td>

【讨论】:

  • 你能分享你的文件结构吗?你把图片放在哪里了?
【解决方案3】:

你的代码有很多问题

1-在你的模型中,使用图片上传字段ig ImageField(使用ImageField你需要已安装 Pillow ):

profile_picture=models.ImageField(upload_to="images", null=True, blank=True)

2-您必须使用具有以下属性的表单:

 enctype="multipart/form-data"
   method="post"

注意
shelldjango 我们有以下内容:

假设upload_to='images':

\>\>\>student.profile_picture
<ImageFieldFile: images/cat.jpg>

\>\>\>student.profile_picture.url
'http://yourDomain/media/images/cat.jpg'

\>\>\>student.profile_picture.path
'media/images/cat.jpg'

\>\>\>student.profile_picture.name
'images/cat.jpg'

见以下链接:
Files in models
Serving files uploaded
Configuring settings

【讨论】:

    猜你喜欢
    • 2011-07-08
    • 2011-11-01
    • 2011-08-17
    • 2012-06-04
    • 2011-04-24
    • 2011-07-09
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多