根据用户/客户的需要自定义主题(CSS和模板)
项目描述
为每个客户端/用户/什么的Django模板和静态主题。
原因
当您需要根据应用程序中的模型(网站、用户等)使用自定义模板和/或样式时。
pimpmytheme将为每个“客户端”(客户端可以是用户、网站或实现get_current方法(见下文)的一切)创建一个文件夹。它也可以同时用于多个项目。这些文件夹位于pimpmytheme目录下以项目名称命名的文件夹中。然后,您的设计师可以拉取/推送此存储库以编辑同一存储库中所有项目的整体外观和感觉!
如何
借助自定义模板加载器和静态文件加载器,pimpmytheme将在当前对象存在自定义模板和静态文件时加载它们。
安装
$ pip install django-pimpmytheme
配置
将pimpmytheme添加到您的INSTALLED_APPS
INSTALLED_APPS = (
'pimpmytheme',
...
)
将pimpmytheme staticfiles_finder添加到您的STATICFILES_FINDERS
STATICFILES_FINDERS = (
"pimpmytheme.static_finder.CustomFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
)
将自定义模板加载器添加到您的TEMPLATE_LOADERS
TEMPLATE_LOADERS = (
'pimpmytheme.template_loader.Loader',
'django.template.loaders.app_directories.Loader',
)
最后,您需要一个具有“get_current”方法的对象。get_current将返回负责定制的对象。例如,您可以使用django.contrib.sites.Site模型按网站定制项目
CUSTOM_THEME_LOOKUP_OBJECT = "django.contrib.sites.models.Site"
CUSTOM_THEME_LOOKUP_ATTR = "name"
然后选择您要存储自定义的目录路径。它必须是绝对路径。
PIMPMYTHEME_FOLDER = "/home/user/myproject/custom_statics"
您可以在这里停止配置,它将正常工作,并且您的静态文件将使用collectstatic命令收集到STATIC_ROOT中。
如果您想进一步配置,您可以设置collectstatic命令将资产复制到的目录名称。它将是django_settings.STATIC_ROOT的子目录
PIMPMYTHEME_FOLDER_NAME = 'pimp_theme'
然后告诉压缩器使用pimpmytheme的过滤器来构建对您的资产的链接
STATICFILES_FINDERS = (
"yourapp.your_finder.PrefixedFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
)
COMPRESS_CSS_FILTERS = ['pimpmytheme.filters.PrefixedCssAbsoluteFilter']
命令
要创建用于定制的所需文件夹,您可以运行pimpmytheme提供的管理命令
$ python manage.py create_folders
在custom_form内部,您将获得一个名为您项目名称的文件夹。在该文件夹内部,您将获得与您定制的模型对象数量一样多的文件夹。如果您使用网站,您将获得example.com文件夹。
您还会找到一个包含空自定义.less文件的静态文件夹。这里为了您的方便,您可以开始编辑此文件以定制您的样式。
您还可以在静态文件夹旁边创建一个模板文件夹,并在其中放置一些自定义模板。
pimpmytheme模板加载器将首先在此目录中查找模板文件。如果找不到,它将回退到Django模板加载器
如果您的主题在git存储库中,请添加设置
PIMPMYTHEME_GIT_REPOSITORY = 'git@github.com:foo/your_pimp_folders.git'
并运行有用的命令将它们拉入PIMPMYTHEME_FOLDER
$ python manage.py update_themefolder_from_git
模板标签系统
使用django-pimpmytheme,您获得一个模板标签系统来管理自定义媒体(CSS、JS和图像)。
此模板系统确保为当前定制存在自定义媒体。因此,您可以为每个客户端获取大量的CSS/JS/图像,而django-pimpmytheme将只加载与当前定制相关的媒体。
然后您可以在这些文件上使用资产管理、压缩器等。
要使用模板标签,首先在模板上加载它
{% load pimptheme %}
然后使用pimp_css、pimp_js或pimp_img来加载您的资产
<img src="{% pimp 'myimage.jpg'%}" alt="Hello" style="opacity:0.8;">
{% pimp_css 'custom.css'%}
{% pimp_js 'javascript.js'%}
{% pimp_img 'myimage.jpg'%}
注意
感谢@leotrouvtou帮助找到项目名称。
项目详情
django-pimpmytheme-2.6.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 80155a74ce566f2ab2b8652adea413582c991976c4fbfad6f0a37a5162622855 |
|
MD5 | 61d5b9097b108120b82953cdf37975a2 |
|
BLAKE2b-256 | ead45961ab4f7818989283d44add824bf4d5e7211c0163ba98be2b660f012d1c |