首页 技术文章 Django图片上传与显示功能实现流程
pay pay

Django图片上传与显示功能实现流程

日期: 二月 14, 2023, 3:21 a.m.
栏目: 技术文章
阅读: 702
作者: Python自学网-村长

摘要: 不管是什么网站或者APP的开发都少不了图片上传和显示这样的功能,比如修改头像,发布文章等等,对于Django来说想实现类似的功能还是比较麻烦的,一般来说这其中文章发布还要借助于富文本编辑器来实现,下面来看看我们是如何实现这样的功能的。

不管是什么网站或者APP的开发都少不了图片上传和显示这样的功能,比如修改头像,发布文章等等,对于Django来说想实现类似的功能还是比较麻烦的,一般来说这其中文章发布还要借助于富文本编辑器来实现,下面来看看我们是如何实现这样的功能的。

一、先看看我们的代码设计

1.models.py

class Article(models.Model):
    art_title = models.CharField(max_length=200, verbose_name='标题')
    art_keyword = models.CharField(max_length=80, blank=True, null=True, verbose_name='关键词')
    art_description = models.CharField(max_length=240, blank=True, null=True, verbose_name='描述')
    art_text = RichTextUploadingField(verbose_name="正文内容")
    art_click = models.IntegerField(default=1, verbose_name='点击数')
    art_time = models.DateTimeField(auto_now_add=True, verbose_name='发布时间')
    art_tags = models.ManyToManyField(to='Tags', verbose_name='标签', blank=True)
    art_img = models.ImageField(upload_to='', blank=True, null=True, verbose_name='缩略图')
    art_author = models.CharField(max_length=20, verbose_name='作者', default='Python自学网')
    is_delete = models.BooleanField(default=0, verbose_name='逻辑删除')

    def __str__(self):
        return self.art_title

    class Meta:
        db_table = 'article'
        ordering = ['id']
        verbose_name = '文章'
        verbose_name_plural = verbose_name

这里通过字段"art_img"来实现图片上传,至于文章内容中的图片,这里是通过富文本编辑器来实现的,有兴趣的可以看看富文本编辑器安装教程。

2.settings.py

# 静态文件目录
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

# 图片上传目录
MEDIA_URL = "/media/"  # 在项目目录下新建一个media目录用于存储上传的图片
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')  # 配置流媒体上传路径

新建media目录用于存储上传的图片

图片上传

通过上面的几步操作,现在图片的上传功能就已经实现了,大家可以试试,当进入后台之后会显示一个文件选择按钮

选择图片

选中图片后就会发现media文件夹中会有对应的图片了,这时候上传已经实现了。

二、显示图片

1.views.py

def article(request):
    if request.method == 'GET':
        user = Wakey_User.objects.filter(user_name=request.session.get('username')).first()
        art_list = Article.objects.all()

        context = {'art_list': art_list}
            return render(request, 'article.html', context=context)

2.urls.py

urlpatterns = [
    url(r'^$', views.index),
    url(r'^article.html$', views.article),
]

3.article.html

<li class="course article">
    <a class="article-img" href="/{{ art.art_link }}.html"><img src="/media/{{ art.art_img }}" alt="{{ art.art_title }}"></a>
    <div class="article-right">
         <h3 class="article-h3"><a href="/{{ art.art_link }}.html">{{ art.art_title }}</a></h3>
         <p>{{ art.art_description }}</p>

    </div>
</li>

 

部分文字内容为Python自学网原创作品,转载请注明出处!视频内容已申请版权,切勿转载!
# 相关文章
# 相关视频
回顶部