Django ---uploads files

Posted magicking

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django ---uploads files相关的知识,希望对你有一定的参考价值。

python manage.py startproject   mysite

python mange.py startapp uploads

 setting 配置

INSTALLED_APPS中加入app name ‘uploads‘,

STATIC_URL = ‘/static/‘
MEDIA_URL = ‘/media/‘
MEDIA_ROOT = os.path.join(BASE_DIR,‘media‘)


根URL 配置
from django.conf.urls import include, url,re_path
from django.contrib import admin
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    re_path(‘uploads/‘,include(‘uploads.urls‘))
] + static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

 



MODEL 配置

from django.db import models

class User(models.Model):
    gender_choices = (
        (‘0‘, ‘男‘),
        (‘1‘, ‘女‘),
        (‘2‘, ‘人妖‘)
    )

    name = models.CharField(‘用户名‘, max_length=256)

    sex = models.CharField(max_length=16, choices=gender_choices, default=‘0‘)

    img = models.ImageField(upload_to=‘images/‘, verbose_name=‘用户头像‘)

    introduce = models.FileField(verbose_name=‘用户简历‘, upload_to=‘introduce/‘)


    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "用户"
        verbose_name_plural = "用户"

 


执行python manage.py makemigrations,migrate 创建数据库

admin 配置

from django.contrib import admin
from . import models
admin.site.register(models.User)

 



URL 配置

from django.urls import path
from . import views

urlpatterns = [
    path(‘add/‘,views.add),
    path(‘detail/‘,views.detail),
]

 

 
View 配置

from django.shortcuts import render
from .models import User


def add(request):
    if request.method == ‘POST‘:
        username = request.POST.get(‘username‘)
        img = request.FILES.get(‘img‘)
        introduce = request.FILES.get(‘introduce‘)
        user = User(name=username, img=img, introduce=introduce)
        user.save()
        return render(request, ‘uploads/add.html‘, locals())
    return render(request, ‘uploads/add.html‘, locals())

def detail(request):
    user_list = User.objects.all()
    return render(request, ‘uploads/detail.html‘, locals())

 

 
创建templates/uploads/add.html  &  detail.html 文件
add.html
<h1>创建新用户</h1>
<form action="/uploads/add/" enctype="multipart/form-data" method="post">
{#    #使用post方法必须使用下面这句代码#}
    {% csrf_token %}
    <label for="username">用户名:</label>
    <input type="text" id="username" name="username" /><br /><br />
    <label for="img">头像:</label>
    <input type="file" id=‘img‘ name="img" /><br /><br />
    <label for="introduce">简历:</label>
    <input type="file" id=‘introduce‘ name="introduce" /><br /><br />

    <input type="submit" value="提交">

</form>

 

detail.html
{% for user in user_list %}

<h1>{{ user.name }}</h1>
<img src="{{ user.img.url }}" />
    <p>{{ user.img.name }}</p>
    <p>{{ user.img.size }}</p>
<br />
<br />

{% for line in user.introduce.readlines %}
    <p>{{ line.decode }}</p>
{% endfor %}

<br />
<br />


{% endfor %}

 


DONE


 

































以上是关于Django ---uploads files的主要内容,如果未能解决你的问题,请参考以下文章

django 上传文件问题

Django处理文件上传File Uploads

文件上传 AngularJS 和 Django:/uploaded_file uploadFile() 处的 TypeError 缺少 1 个必需的位置参数:“请求”

仅当 upload_to 被称为 django 时才调整图像大小

django FBV&&CBV upload-file json 路由系统 反向解析

Django ajax 文件上传