Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
model form not rendering in django template
My models.py and this is my model for photos. # home photo page class Photos(models.Model): photo_title = models.CharField(max_length=50, blank=False) photo_description = models.CharField(max_length=50, blank=False) photo_date = models.DateField(blank=False) photo_location = models.CharField(max_length=50, blank=False) photo_file = models.FileField(upload_to='photos', blank=False) def __str__(self): return self.photo_title My forms.py this is the model form I made to render it as a form. class UploadPhotosForm(forms.Form): class Meta: model = Photos fields = '__all__' my views.py these are my relavent imports and section I coded in view file. from .forms import CampForm, ProjectForm, HikeForm, UploadPostsForm, UploadPhotosForm posts = UploadPostsForm() photo = UploadPhotosForm() print(photo.as_p()) context = { 'title': 'manage_wall', 'posts': posts, 'photo': photo, } return render(request, 'manager/manage_wall.html', context) My template {% block content %} <div class="container"> <div class="row"> <div class="col"> <form action="" method="post"> {% csrf_token %} {{photo.as_p}} <input type="submit" value="Add"> </form> </div> <div class="col"> <form action="" method="post"> {% csrf_token %} {{posts.as_p}} <input type="submit" value=" Add"> </form> </div> </div> </div> {%endblock %} As you can see here my photoForm is not rendering in the frontend can someone point out the mistake I have made not to render that form only while other forms are successfully rendering in the frontend. My Question is all other model forms rendered successfully why this is not displaying … -
404 Not Found Nginx Error After SFTP Changes via FireZilla
I just updated my site's (Django; deployed via AWS Lightsail) files via FileZilla but my website won't load now, giving me a 404 error. I've done some research and they're telling me it is an error with Nginx's conf file, but I'm not sure how I should change it to resolve the issue. Here is the conf file: GNU nano 3.2 nginx.conf user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; I've attempted to return to a previous snapshot (that used to function) by creating a new instance, but when I try to load the backup via its public IP it seems to still give me a 404. -
Django / ListView / Use get_context_data to count all keys in a json variable
I would like to return in my Link.html the number of links contain in allLinks variable (json) So far I guess I misunderstand the use of get_context_data and how to pass to context['CountLink'] the total count of links. With the current code , I got : Liste des recherches terre : <QuerySet [<Post: terre>, <Post: océan>]> Links océan : <QuerySet [<Post: terre>, <Post: océan>]> Links Models.py class Post(models.Model): title = models.CharField(max_length=255) url = models.URLField(max_length=255) allLinks = models.JSONField() def __str__(self): return self.title views.py class LinkView(ListView): model = Post template_name = 'link.html' def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['CountLink'] = Post.objects.all() return context Link.html {% for post in object_list %} <li> <a href="{% url 'DetailLink' post.pk %}">{{ post.title }}</a> : {{CountLink}} Links </li> {% endfor %} -
Trouble with importing Django import-export library
I've tried to import Django's import-export library as specified in the documentation. It seems that it has been installed correctly in my venv: asgiref==3.5.2 defusedxml==0.7.1 diff-match-patch==20200713 Django==4.1.4 django-import-export==3.0.2 et-xmlfile==1.1.0 import-export==0.3.1 MarkupPy==1.14 numpy==1.23.5 odfpy==1.4.1 openpyxl==3.0.10 pandas==1.5.2 python-dateutil==2.8.2 pytz==2022.7 PyYAML==6.0 six==1.16.0 sqlparse==0.4.3 tablib==3.3.0 tzdata==2022.7 xlrd==2.0.1 xlwt==1.3.0 I've also added it to my installed apps in settings.py: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app.apps.AppConfig', 'django.conf' 'import_export', ] But still, when I'm trying to import it in my app's admin.py file, it doesn't work: What else could go wrong? The project itself as for now doesn't really include almost any code. I've tried re-installing the library in my venv, double checked it if it's there, but that didn't solve the problem I'm struggling to find any solutions I could apply, since almost all of the tutorials and answers only include the two setup steps I've mentioned and done -
Django: accessing the related_name on a Model returns None
models.py from django.contrib.auth.models import AbstractUser from django.db import models class User(AbstractUser): pass class Likes(models.Model): pass class Unlikes(models.Model): pass class Post(models.Model): post_text = models.TextField(max_length=1000) user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='posts') created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) likes = models.ManyToManyField(User, null=True, related_name="liked_posts") unlikes = models.ManyToManyField(User, null=True, related_name="unliked_posts") def __str__(self): return f'{self.user} at {self.created_at}: {self.post_text[0:20]}...' views.py def profile(request, username): print(User.objects.get(username=username).posts) print(Post.objects.filter(user = User.objects.get(username=username))) return render(request, 'network/profile.html', { 'user': request.user, 'profile': User.objects.get(username=username) }) My models.py file defines the relationship between User and post as follows: user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='posts') Running: print(User.objects.get(username=username).posts) print(Post.objects.filter(user = User.objects.get(username=username))) returns: network.Post.None <QuerySet [<Post: Joe at 2022-12-18 10:48:18.941880+00:00: test1...>, <Post: Joe at 2022-12-18 10:53:27.407349+00:00: test1...>, <Post: Joe at 2022-12-18 10:53:34.167508+00:00: test2...>]> My question: How can the first print statement return no rows, when the second statement returns the expected value (3 rows)? As far as I understand, the two statements should achieve the same thing? -
Docker Gulp based on Django Cookiecutter - node path errors
I have installed a Docker project based on Django Cookiecutter using Gulp. Runs perfectly. First thing I try to do is install my NPM package. They install and I can see them in the docker local_node. But I will get path error when running Docker Up. Cookiecutter comes installed Bootstrap. So I use that as an example. This Gulp code and my added NPM works fine in a normal Django project - so I know the address paths are fine for the node_modules. But in a Docker Up I get a bad path error. [12:14:12] Error: File not found with singular glob: /app/node_modules/tooltipster/dist/js/tooltipster.bundle.js (if this was purposeful, use `allowEmpty` option) prelim_local_node | at Glob.<anonymous> (/app/node_modules/glob-stream/readable.js:84:17) prelim_local_node | at Object.onceWrapper (node:events:628:26) prelim_local_node | at Glob.emit (node:events:513:28) prelim_local_node | at Glob.emit (node:domain:489:12) prelim_local_node | at Glob._finish (/app/node_modules/glob/glob.js:194:8) prelim_local_node | at done (/app/node_modules/glob/glob.js:179:14) Why do the preinstalled bootstrap npm packages work and my installed packaged create issues? Is there some special way to add a path for a Docker image? Docker will still run - just not with my packages. The gulpfile. tooltipster and parsleyjs do not work. The code will stop processing after the first error. // Relative paths function function pathsConfig(appName) … -
django pipeline FileNotFoundError when the path is right
I'm trying to add pipeline to my django project. But it's throwing me winerror 2 (FileNotFoundError) when I'm trying to execute collectstatic settings.py STATIC_URL = 'static/' STATICFILES_STORAGE = 'pipeline.storage.PipelineStorage' STATIC_ROOT = 'static' STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'pipeline.finders.PipelineFinder', ) PIPELINE = { 'PIPELINE_ENABLED': True, 'STYLE': { 'base': { 'source_filenames': ( 'css\\core\\header.css', 'css\\core\\reset.css', 'css\\core\\style.css' ), 'output_filename': 'css\\core\\base.css' }, } } ├───css │ ├───BRS │ │ journal.css │ │ journal.css.map │ │ journal.scss │ │ │ ├───core │ │ form.css │ │ header.css │ │ images.css │ │ intro.css │ │ reset.css │ │ start.css │ │ style.css │ │ table.css │ │ │ ├───Portfolio │ └───user │ user.css │ user.css.map │ user.scss I even changed the subprocess module to output the executable variable and I get None Tried to change the STATIC_ROOT variable to BASE_DIR / "static" but that didn't help Expected static files to be compressed -
Django logger not logging error in log file
Hi all I am facing issues with logging in django. It is not logging error in my django.log file. Following is the code I am using in views.py :- import logging logger = logging.getLogger(__name__) class SomeView(CreateAPIView): serializer_class = some_class queryset = models.model_name.objects def create(self, request, *args, **kwargs): try: some_code try: some_more_code except Exception as e: logger.error(e, exc_info=True) print(e) except: pass return 1 This works and inner block print error. Then in settings.py import logging LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' }, }, 'handlers': { 'file': { 'level': 'ERROR', 'class': 'logging.FileHandler', 'filename': 'django.log', 'formatter': 'verbose' }, 'console': { 'level': 'ERROR', 'class': 'logging.StreamHandler', 'formatter': 'verbose' }, }, 'loggers': { 'django': { 'handlers': ['file', 'console'], 'level': 'ERROR', 'propagate': True, }, }, } this creates a django.log file but I dont see errors in django.log files when i trigger error. Can anyone please guide me. I am using pycharm which shows log format not recognized i f that is of any help -
Django Jinja2 - AttributeError: 'Environment' object has no attribute 'get_source'
I have the following two lines of code. Both are using jinja2 to replace the template variables: subject = Environment(loader=BaseLoader).from_string(template.email_subject).render(context) body = Environment(loader=BaseLoader).from_string(template.email_template).render(bodyContext) The first line works just fine, while the second line throws the Error: AttributeError: 'Environment' object has no attribute 'get_source' The context dictionary includes all necessary template variables and the jinja2 syntax should be correct as well. Just to be sure, here are the templates as well: template.email_template: Hallo {{name}}, {%- include invoiceType+'/email_body.tpl' -%} Viele Grüße {{emailFooter}} invoiceType/email_body.tpl: im Anhang findest du/findet ihr den Entwurf für die kommende Rechnung über alle angefallenen Kosten bis zum {{invoiceDate -}}. template.email_subject: Rechnung {{currentYear}}{{invoiceID}} -
How to show content with zip in view with django?
I hava a django applicaiton. And I try to show the content values from the backend in the template. There is a method: show_extracted_data_from_file where I combine three methods: class FilterText: def total_cost_fruit(self): return [3588.20, 5018.75, 3488.16, 444] def total_cost_fruit2(self): return [3588.20, 5018.75, 3488.99] def total_cost_fruit3(self): return [3588.20, 5018.75, 44.99] def show_extracted_data_from_file(self): regexes = [ self.total_cost_fruit(), self.total_cost_fruit2(), self.total_cost_fruit3, ] matches = [(regex) for regex in regexes] return zip(matches) and I have the view: def test(request): content_pdf = "" filter_text = FilterText() content_pdf = filter_text.show_extracted_data_from_file() context = {"content_pdf": content_pdf} return render(request, "main/test.html", context) and html: <div class="wishlist"> <table> <tr> <th>Method 1</th> <th>Method 2</th> <th>Method 3</th> </tr> {% for value in content_pdf %} <tr> <td>{{value.0}}</td> <td>{{value.1}}</td> <td>{{value.2}}</td> </tr> {% endfor %} </table> </div> But it looks now: Method 1 Method 2 Method 3 [3588.2, 5018.75, 3488.16, 444] [3588.2, 5018.75, 3488.99] [3588.2, 5018.75, 44.99] But I want it of course under each other: Method 1 Method 2 Method 3 3588.2 3588.2 3588.2 5018.75, 44.99 3488.99 5018.75, 5018.75 3488.16 444 -
Django Using Default Form & File Submission with Drag and Drop functionality
I have a django application that allow user to upload their image and then another dialog opens to collect user data related to them. After the dialog form has been submitted, I have added the javascript eventlistener to submit successfully submit the form with data and it redirects to the form's action attribute. I wanna implement the same functionality, if user drop their image in the browser then dialog opens to collect user data, then do the same as above and redirect to the form's action attribute. How can I achieve it? Here is my code #--urls.py from django.urls import path from . import views from django.conf import settings from django.conf.urls.static import static urlpatterns = [ path('', views.index, name='index'), path('success/', views.success_function, name='success page'), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) #--views.py def index(request): form = userForm() return render(request, 'polls/hello_world.html', {'form': form}) def success_function(request): if request.method == 'POST': form = userForm(request.POST, request.FILES) user_files = request.FILES.getlist('django_image_field') if form.is_valid(): images_data = [] for eachfile in user_files: #handle_uploaded_file(eachfile) file_path = file_upload(eachfile) img_details = {'file_path': file_path, 'file_name': eachfile.name} images_data.append(img_details) return render(request, 'polls/success.html', {'data': images_data}) else: print(form.errors) return HttpResponse("Not valid form") else: return HttpResponse("Not a valid method") --under forms.py class NameForm(forms.Form): your_name = forms.CharField(required=False, label='Your name', max_length=100) django_image_field = … -
assign a reserved word of sql as a variable in a sql query
I would like to know how to put a reserved word of sql as a variable in a sql query def requeteDB(sql_request): with connection.cursor() as cursor: cursor.execute(*sql_request) row = cursor.fetchall() return row def query1(choice, limit): return(''' SELECT col1, SUM(col2) as nb as ORDER BY nb %s LIMIT %s ''', [choice, limit]) requeteDB(query1(choice="DESC", limit="5")) > *** django.db.utils.ProgrammingError: ERROR: Type 'nb' does not exist LINE 10: ORDER BY nb 'DESC' ------------------^ -
Django DRF - nested serializer (level>2) does not show up in the response
We have the follwing structure (library->books->pages) the first serializer class Library(serializers.ModelSerializer): books = BookSerializer(many=True) class Meta: model = Library fields = '__all__' @transaction.atomic def create(self, validated_data): # create logic here the second serializer class BookSerializer(serializers.ModelSerializer): results = PageSerializer(many=True, required=False) class Meta: model = Book fields = '__all__' we have an endpoint library/, where we post the payload of the following format { "ref": "43a0c953-1380-43dd-a844-bbb97a325586", "books": [ { "name": "The Jungle Book", "author": "Rudyard Kipling", "pages": [ { "content": "...", "pagenumber": 22 } ] } ] } all the objects are created in the database, but the response does not contain pages key. It looks like this { "id": 27, "ref": "43a0c953-1380-43dd-a844-bbb97a325586", "books": [ { "id": 34, "name": "The Jungle Book", "author": "Rudyard Kipling" } ] } depth attribute does not seem to work. What do I have to do to make pages appear in the responce? -
How to delete UserFollowing based on user_id and following_user_id using Django Rest Framework
Here's the link to the answer of how the following relationship was created in the first place. https://stackoverflow.com/a/58799650/18498343 -
Is there a way that fully managed device under android management api stays enrolled after factory reset?
I enroll the device using qrCode and have not disabled factory reset. But once I factory reset the device, the device no longer stays enrolled and becomes a simple personal phone. Is there a way, the device stays enrolled after factory reset or any soft reset functionality? -
How to return empty queryset from django_filters.FilterSet in API view if querystring hasn't any valid key
I use django-filter package with djangorestframework package for filter objects that return from API view. There are my files: # models.py class Symbol(models.Model): title = models.CharField(max_length=30, verbose_name='title') # serializers.py class SymbolSerializer(serializers.ModelSerializer): class Meta: model = Symbol fields = ('title',) # filters.py class SymbolFilter(django_filters.FilterSet): st = django_filters.CharFilter(method='get_st', label='search') def get_st(self, queryset, field_name, value): return queryset.filter(title__icontains=value) class Meta: model = Symbol # views.py @api_view(['GET']) def symbol_list(request): queryset = Symbol.objects.all() view_filter = APIFilters.APISymbolFilter(request.GET, queryset=queryset) if (view_filter.is_valid() is False) or (not view_filter.qs): return Response(None, status=status.HTTP_404_NOT_FOUND) ser = SymbolSerializer(view_filter.qs, many=True) return Response(ser.data, status=status.HTTP_200_OK) # urls.py from .views import * urlpatterns = [ path('symbol/list/', symbol_list, name='symbol_list'), ] So, If I sent get request to localhost:8000/symbol/list/?st=sometitle all things are good and I will got Symbol objects that have sometitle in there title field. But when I remove st from querystring, django-filter will return all objects in Symbol model. My question is: How Can I return empty queryset if st key isn't in querystring or if filter(title__icontains=value) was empty? -
HeidiSQL is not showing any data even when table size is more than 0B
I have Postgresql Database in production and i'm trying to insert data from my localhost using psycopg2 library. i'm seeing my database through HeidiSQL. But after i finished inserting the data, my HeidiSQL shows that table size increased but when i try to see the data, it shows 0 rows. I have tried to drop all tables and re-migrate and re-insert the data, but still it shows 0 rows even when the table size is not 0 B. I have tried to insert table one by one from the program by comment the other insert and it works. But i still can't understand why i can't see any data when i'm inserting simultaneously -
How to deal with foreign keys from another microservice?
I have 2 microservices: one for subjects and one for questions. Don't ask me why. It has to be like that. So in questions I have this m2m-like model: class QuestionsSubjects(models.Model): question = models.ForeignKey(Question, ...) subject_id = models.PositiveIntegerField() And question model has this property: @property def subjects(self) -> QuerySet[int]: return QuestionsSubjects.objects \ .filter(question=self).values_list('subject_id', flat=True) I don't have Subject model I only have ids coming from frontend. I need to store relations between questions and subjects. But what I have now is not convenient because it's hard to create questions with subjects. For example, I have this QuestionSerializer: class QuestionSerializer(serializers.ModelSerializer): subjects = serializers.ListField(child=serializers.IntegerField()) class Meta: model = Question fields = [ # some other question fields 'subjects', ] def create(self, validated_data: dict[str, Any]) -> Question: subject_ids: list[int] = validated_data.pop('subjects', []) question = Question.objects.create(**validated_data) create_questions_subjects(question, subject_ids) return question def update(self, question: Question, validated_data: dict[str, Any]) -> Question: # delete all existing rows for specific question QuestionsSubjects.objects.filter(question=question).delete() # and recreate them with new subject ids subject_ids: list[int] = validated_data.pop('subjects', []) create_questions_subjects(question, subject_ids) return super().update(question, validated_data) The problem is I'm getting subject ids from client and everytime I need to go through each subject id and create row in QuestionsDirections for each subject with … -
Django +4.1: How to show in templates the message from violation_error_message in UniqueConstraint
I'm lost... In my model in models.py I have class Project(models.Model): ... fields ... ... save ... ... etc ... class Meta: constraints = [ UniqueConstraint( fields=['name', 'owner'], name='unique_name', violation_error_message='my_error_message' ) ] In my class in views.py I have class CreateProject(LoginRequiredMixin, CreateView): form_class = ProjectForm model = Project def form_valid(self, form): return super().form_valid(form) In forms.py I have class ProjectForm(forms.ModelForm): class Meta: model = Project fields = ("name", "description") How do I display the message in violation_error_message in templates when I don't have a unique name for each user (owner field)? -
Is there a way to make this django annotate query more efficient
I'm struggling to make a django query more efficient. It either takes a long time on localhost, times out on my production server, or just gives a 500 on the tiny AWS nano server that I use for testing. What I'm trying to do is find the most "rolled on" charts (these are random tables or random generators), over a period of time. The largest period of time is 12 months. The query looks a bit like this... queryset = Chart.objects.all().filter(diceroll__timestamp__gt=time_delta, diceroll__timestamp__lte=timestamp_now).annotate(num_dicerolls=Count("diceroll")).order_by('-num_dicerolls') The problem is that the longer the period of time, the longer the query takes, so it seems that the massive number of dice rolls is a contributing factor. Each dice roll is logged as its own entry in a DiceRoll table (so Chart is a fk in the DiceRoll table). The only alternative I can think of is a non-django related solution where a completely different database table is used to cache the number of dice rolls per chart for every past month. That would mean that the annotator would have less to count. This is just a guess though, so untested, so before I go down that rabbit hole, I would to know if there is … -
i need a program for every second we need to print a "Hii" stirng using the python language
for every one second we need to greet "Hii" , I want this program in python langugage i need python programm -
Can I delete .env file from server?
I have a Django application where all the secret information (secret key and keys for encryption) are in the .env file as environment variables - I'm using the python-dotenv library. After starting the application, I removed the .env file from the server files and the application continues to work as it should. Can deleting this file cause any problems? Is there any other (or better) way to secure these secrets in a Django application? If it's relevant, I use pythonanywhere.com -
The current path, products/ didn't match any of these
I am watching a Django tutorial from PROGRAMMING WITH MOSH on YouTube however even though my code is exactly the same as shown in the video for some reason I get this message: The current path, products/, didn’t match any of these. I am using python 3.1 and Django 4.1.4, here is my code: PyShop/products/views.py` from django.http import HttpResponse from django.shortcuts import render # URL ----> Uniform resourse locator def index(request): return HttpResponse('Hello world ') PyShop/pyshop/urls.py ` from django.contrib import admin from django.urls import path, include urlpatterns = [ path("admin/", admin.site.urls), path("products/", include ('products.urls')) PyShop/products/urls.py ` from django.urls import path from . import views urlpatterns = [ path (' ', views.index) ] I was expecting to get a message saying hello world when I type products/ in the search bar. I rewatch the tutorial a couple of times and I am pretty sure that I have the same code as the person on the tutorial ` -
Django in connection with Postgres says settings.DATABASES is improperly configured
I am so new to Django and postgresql. Dajngo made a connection at first step and created my tables, but after that just keep telling 'settings.DATABASES is improperly configured, Please supply the NAME or OPTIONS['service'] value.'. I really don't know what is the issue. I will post some of code related to database. my database is running and I can see my tables there via pgAdmin. Django version is 4.1.4 and psycopg2 version is 2.9.5. My sttings.py POSTGRES_HOST = os.environ.get('POSTGRES_HOST', default="") POSTGRES_DB = os.environ.get('POSTGRES_DB', default="") POSTGRES_USER = os.environ.get('POSTGRES_USER', default="") POSTGRES_PASSWORD = os.environ.get('POSTGRES_PASSWORD', default="") DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': POSTGRES_DB, 'USER': POSTGRES_USER, 'PASSWORD': POSTGRES_PASSWORD, 'HOST': POSTGRES_HOST, 'PORT': 5432, } } My docker-compose.yml version: "3.11" x-service-volumes: &service-volumes - ./:/app/:rw,cached x-database-variables: &database-variables POSTGRES_DB: postgres POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres x-app-variables: &app-variables <<: *database-variables POSTGRES_HOST: postgres services: website: image: iranrevolution-website:latest command: python3 manage.py runserver 0.0.0.0:8000 volumes: *service-volumes depends_on: - db_migrate ports: - "8000:8000" db_migrate: image: iranrevolution-website:latest command: python3 manage.py migrate volumes: *service-volumes environment: *app-variables depends_on: - postgres postgres: image: postgres ports: - "5432:5432" environment: *database-variables volumes: - db-data:/var/lib/postgresql/data volumes: db-data: I checked both project and database is running in docker. and database is listening to new connections. I tried to put real … -
Video loading 5 times when changing source with javascript
I'm attempting to change the video being loaded for a hero video based off the screen size. It is successfully changing the video but it is loading the video 5 times. I'm not sure where I'm going wrong. Here's my Javascript <script> var w = window.matchMedia("(max-width: 850px)"); var vid = document.getElementById("vid"); var source = document.createElement("source"); source.id = "hvid"; source.setAttribute("type", "video/mp4"); vid.appendChild(source); if (w.matches) { vid.pause(); source.removeAttribute("src"); source.setAttribute("src", "{% static 'img/bg-mobi-final.mp4' %}"); vid.load(); vid.play(); } else { vid.pause(); source.removeAttribute("src"); source.setAttribute("src", "{% static 'img/final-bg_1.mp4' %}"); vid.load(); vid.play(); } window.addEventListener("resize", function () { var w = window.matchMedia("(max-width: 850px)"); var vid = document.getElementById("vid"); var source = document.getElementById("hvid"); if (w.matches) { vid.pause(); source.src = "{% static 'img/bg-mobi-final.mp4' %}"; vid.load(); vid.play(); } else { vid.pause(); source.src = "{% static 'img/final-bg_1.mp4' %}"; vid.load(); vid.play(); } }); </script> and the html <video autoplay muted id="vid"> </video> I've tried loading the videos from an outside source to see if it is something that Django may be doing and that still resulted in the video being loaded 5 times.