Django Python кроме загрузки текста, я бы хотел иметь возможность загружать изображения и видео
Я работаю над сайтом социальной сети. Базовый код я беру из проекта с открытым исходным кодом на GitHub. На моем сайте вы можете загружать только текст и ссылки на некоторые изображения, но они не очень удобны для пользователя. Я бы хотел иметь возможность загружать изображения и видео помимо текста.
Когда я смотрю учебники на YouTube, всегда очень трудно реализовать этот код у себя.
Есть ли способ, чтобы кто-то мог мне помочь?
Код post_form.html, post_detail.html, forms.py, views.py, models.py, urls.py, admin.py, settings.py находится под этим текстом:
post_form.html
post_detail.html
{% extends "blog/base.html" %}
{% block title %}Post{% endblock %}
{% block content %}
<div class="col-md-10 m-auto">
<article class="content-section" style="overflow: auto;">
<div class="media">
<img class="rounded-circle article-img" src="{{post.author.profile.image.url}}" alt="image">
<div class="media-body">
<h4 class="d-inline"><a class="mr-2" href="{% url 'profile-detail-view' post.author.pk %}">{{ post.author }}</a></h4>
<div id="save-section">
{% include 'blog/save_section.html' %}
</div>
<p><small class="text-muted">{{ post.date_posted|date:"F d, Y" }}</small></p>
</div>
</div>
<hr>
<h3 class="d-inline"><a class="article-title" href="{% url 'post-detail' post.id %}">{{ post.title }}</a></h3>
{% if post.author == user %}
<div class="d-inline float-right">
<a class="btn btnedit" href="{% url 'post-update' post.id %}"><i class="far fa-edit"></i></a>
<a class="btn btndel" href="{% url 'post-delete' post.id %}"><i class="far fa-trash-alt"></i></a>
</div>
{% endif %}
<hr>
<p class="article-content">{{ post.content|safe }}</p>
<hr>
<div id="like-section">
{% include 'blog/like_section.html' %}
</div>
</article>
<hr>
<div class="main-comment-section">
{% include 'blog/comments.html' %}
</div>
<br><br>
</div>
{% endblock %}
forms.py
from django import forms
from django.forms import fields
from .models import Post, Comment
class CommentForm(forms.ModelForm):
body = forms.CharField(widget=forms.Textarea(attrs={'class':'form-control custom-txt','cols':'40','rows':'3'}), label='')
class Meta:
model = Comment
fields = ['body',]
views.py
models.py
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.db.models.deletion import CASCADE
from django.urls import reverse
from ckeditor.fields import RichTextField
from django.contrib.contenttypes.fields import GenericForeignKey
""" Post model """
class Post(models.Model):
title = models.CharField(max_length=150)
content = RichTextField(blank=True, null=True)
date_posted = models.DateTimeField(default=timezone.now)
date_updated = models.DateTimeField(auto_now=True)
author = models.ForeignKey(User, on_delete=models.CASCADE)
likes = models.ManyToManyField(User, related_name="blogpost", blank=True)
saves = models.ManyToManyField(User, related_name="blogsave", blank=True)
def total_likes(self):
return self.likes.count()
def total_saves(self):
return self.saves.count()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={"pk":self.pk})
""" Comment model """
class Comment(models.Model):
post = models.ForeignKey(Post, related_name="comments" , on_delete=models.CASCADE)
name = models.ForeignKey(User, on_delete=models.CASCADE)
body = models.TextField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)
likes = models.ManyToManyField(User, related_name="blogcomment", blank=True)
reply = models.ForeignKey('self', null=True, related_name="replies", on_delete=models.CASCADE)
def total_clikes(self):
return self.likes.count()
def __str__(self):
return '%s - %s - %s' %(self.post.title, self.name, self.id)
def get_absolute_url(self):
return reverse('post-detail', kwargs={"pk":self.pk})
urls.py
from django.urls import path
from . import views
from django.conf import settings
from django.conf.urls.static import static
from .views import AllSaveView, PostListView, PostDetailView, PostCreateView, PostUpdateView, PostDeleteView, SaveView, UserPostListView, LikeView,LikeCommentView, posts_of_following_profiles, AllLikeView
urlpatterns = [
path('', views.first, name='firsthome'),
path('home/', PostListView.as_view(), name='blog-home'),
path('feed/', posts_of_following_profiles, name='posts-follow-view'),
path('post/user/<str:username>/', UserPostListView.as_view(), name='user-posts'),
path('post/<int:pk>/', PostDetailView, name='post-detail'),
path('post/<int:pk>/update/', PostUpdateView.as_view(), name='post-update'),
path('post/<int:pk>/delete/', PostDeleteView.as_view(), name='post-delete'),
path('post/new/', PostCreateView.as_view(), name='post-create'),
path('post/like/', LikeView, name='post-like'),
path('liked-posts/', AllLikeView, name='all-like'),
path('post/save/', SaveView, name='post-save'),
path('saved-posts/', AllSaveView, name='all-save'),
path('post/comment/like/', LikeCommentView, name='comment-like'),
path('trends/', views.trends, name='blog-trends'),
path('settings/', views.settings, name='blog-settings'),
path('search/', views.search, name='search'),
path('blog/', views.blog, name='blog-blog'),
path('termsofuse/', views.termsofuse, name='blog-termsofuse'),
path('termsofusede/', views.termsofusede, name='blog-termsofusede'),
path('termsofuseit/', views.termsofuseit, name='blog-termsofuseit'),
path('termsofusees/', views.termsofusees, name='blog-termsofusees'),
path('termsofusefr/', views.termsofusefr, name='blog-termsofusefr'),
path('termsofusetr/', views.termsofusetr, name='blog-termsofusetr'),
path('privacypolicy/', views.privacypolicy, name='blog-privacypolicy'),
path('cookies/', views.cookies, name='blog-cookies'),
path('press/', views.press, name='blog-press'),
path('helpcenter/', views.helpcenter, name='blog-helpcenter'),
]
admin.py
from django.contrib import admin
from .models import Comment, Post
from . import forms
from . import models
admin.site.register(Comment)
admin.site.register(Post)
settings.py
Какой код мне нужно реализовать, чтобы сделать изображения и видео загружаемыми?