Static files are not loading in Django - python

Why I am receiving files can't be found error while loading all the static files even after setting everything correctly.
ERROR
CODE:
Admin Section
- settings.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, '')
- urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('Welcome.urls')),
path('auth/', include('Authentication.urls')),
path('ad/', include('Ads.urls')),
path('user/', include('UserDashboard.urls')),
path('admin/', include('AdminDashboard.urls')),
]
if settings.DEBUG:
urlpatterns = urlpatterns + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
urlpatterns = urlpatterns + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Apps Section
- template
<link href="{% static 'css/user/style.css' %}" rel="stylesheet">
- Folder Structure

You get this error because the Django project searches your static folders in the wrong place.
This will work:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

Related

django url pattern "The empty path didn't match any of these."

I am trying to configure static files for django v2.2.1 following this https://docs.djangoproject.com/en/2.2/howto/static-files/
In settings.py:
STATIC_URL = '/static/'
STATICFILES_DIR = [
os.path.join(BASE_DIR, 'static'),
]
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
In urls.py:
from django.contrib import admin
from django.urls import include, path
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
]
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Project directory:
But I'm getting this error when running localhost:8000
I've been scratching my head for too long.
What am I missing here?
If you want the picture as your response you will have to visit http://127.0.0.1:8000/media/no_picture.png
If you want access to the admin page visit http://127.0.0.1:8000/admin/
You aren't receiving any response on http://127.0.0.1:8000/ because you haven't defined a view for that url pattern.
To write a Hello World view for example check out this tutorial from django documentation.

Static and media files are not loaded in production

You can see my urls.py and my settings.py.
Server
NGINX, gunicorn
urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include("appCms.urls"))
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static_cdn/')
MEDIA_URL ='/mediafiles/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'mediafiles_cdn/')

Static files couldnt applied in Django

I'm new in Django and i see course in youtube
I try to include bootstrap\css files into HTML template and i created a static file into the app like the photo
Also i checked the file(second\ urls.py) and in it the code
'''
STATIC_URL = '/static/'
INSTALLED_APPS = [
'accounts',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
'''
And in login.html there is this link
'''
{% load static%}
<link rel="=stylesheet" type="text/css" href="{% static 'accounts/style.css' %}">
'''
I applied other way like adding this second\setting.py
STATICFILES_DIRS = [
os.path.join(BASE_DIR,"accounts/static"),
'accounts/static/'
]
And this is my urls.py file
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
In the terminal there is warning but i think it isnt affect
WARNINGS:
?: (2_0.W001) Your URL pattern '^account/' has a route that contains '(?P<', begins with a '^', or ends with a '$'. This was likely an
oversight when migrating to django.urls.path().
UPDATE: After looking in your application code, I've found the problem.
You have to put this code
+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
in the main urls.py file , in your case is the second/urls.py .
And make sure you have this code
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'name_of_the_root_directory/static'),
]
in your settings.py file
Have you run the collectstatic command ? python manage.py collectstatic.
Maybe try changing this in your urls.py file
urlpatterns = [
url(r'^$', views.home),
]
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Into this
urlpatterns = [
url(r'^$', views.home),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
This is my configuration in settings.py
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'name_of_the_root_directory/static'),
]
And this is my urls.py file
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
If you follow my example, you have to run the collectstatic command from the terminal window

Django static files (404 not found) - Openshift

I'm trying to run my very first project using Python/Django on Openshift and have problem with loading my static files.
I've read the https://docs.djangoproject.com/en/dev/howto/static-files/ multiple times I have been breaking my head over this for a full day but can't figure out the problem.
I'm running a developer server:
python manage.py runserver
setting.py
STATIC_URL = '/static/'
if 'OPENSHIFT_REPO_DIR' in os.environ:
STATIC_ROOT = os.path.join(os.environ.get('OPENSHIFT_REPO_DIR'), 'wsgi', 'static')
else:
STATIC_ROOT = os.path.join(WSGI_DIR, 'static')
template
{% load static %}
<img src="{% static "logo2.png" %}">
urls.py
from django.conf.urls import include, url
from django.contrib import admin
from django.views.generic import RedirectView
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns = [
url(r'^$', RedirectView.as_view(url='/index/')),
url(r'^index/', include('index.urls')),
url(r'^polls/', include('polls.urls')),
url(r'^admin/', include(admin.site.urls)),
]
urlpatterns += staticfiles_urlpatterns()
The weirdest thing is that after pushing my app to openshift everything is working just fine but on localhost sth goes wrong.
Make long story short:
127.0.0.1:8000/static/logo2.png - Not found
mysite.rhcloud.com/static/logo.png - Yeah, I see the image
I hope it's clear and my problem is as stupid as I imagine.
Django 1.8, OS Windows
SOLUTION:
I've deleted the 'django.contrib.staticfiles' from INSTALLED_APPS and add to the urls.py this peace of code:
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Are you in development mode? If yes and if you don't have django.contrib.staticfiles in INSTALLED_APPS, you need to add this to urls.py:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
...
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Explained here.

python django - page not found error (404)- static error

I somehow got the application running on django (new to python and django) and although the page loads the default URL (127.0.0.1:8000) but it does load the css files. It produces following error css files are directly accessed.
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/static/css/bootstrap.min.css
'css\bootstrap.min.css' could not be found
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
Here is my settings.py page:
STATIC_URL = '/static/'
# Template location
TEMPLATE_DIRS = {
os.path.join(os.path.dirname(BASE_DIR), "whattheheck", "static", "templates"),
}
if DEBUG:
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "whattheheck", "static", "static-only")
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "whattheheck", "static", "media")
STATICFLIES_DIRS = (
os.path.join(os.path.dirname(BASE_DIR), "whattheheck", "static", "static")
)
and Here is the urls.py page:
from django.conf.urls import patterns, include, url
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
url(r'^$', 'signups.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
)
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
can someone help with this please?
After you add any kind of static files to your project you should execute
python manage.py collectstatic

Categories

Resources