[英]stylesheet not loading from relative path in django
當前在django中設置了文件夾結構:
{appname} \\ templates \\
{appname} \\ templates \\ assets \\ css \\
但是,當我嘗試在{appname}\\templates\\
模板中包含諸如<link rel="stylesheet" href="assets/css/bootstrap.css" />
之類的內容時,無論出於何種原因都不會加載; 我可以直接從twitter加載,但如果可能的話,我希望保留相對路徑。
為什么這不起作用? 如果有任何線索,PyCharm中的子文件夾將顯示為淺灰色,不知道為什么會發生這種情況。
編輯 :好的,所以我在這里閱讀了有關如何設置靜態文件的信息,並在我的主項目文件夾下建立了一個static
目錄,並在其下面有一個css
文件夾。
我更新了settings.py以包括:
# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = ''
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'
# Additional locations of static files
import os.path
STATICFILES_DIRS = (
os.path.dirname(__file__).replace('\\','/'),
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
然后嘗試添加
<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.css" />
到我的html文件,但未加載-我在這里做錯了什么?
您想將css放在應用程序根目錄中名為static的文件夾中。 然后確保INSTALLED_APPS
(在settings.py中)包含了django.contrib.staticfiles
。 現在,當您運行python manage.py runserver
,您可以在localhost:8000 / static /中使用靜態文件(這由STATIC_URL
設置定義-默認為static/
)。
您需要確保在視圖中使用RequestContext對象。 這樣可確保模板中的settings.py中的變量(例如STATIC_URL)可用-
def your_view(request):
#...
return render_to_response('page.html', context_data, context_instance=RequestContext(request))
(如果您使用新的render()快捷方式而不是render_to_response,則會為您處理)
如果要在生產環境中提供文件,則可以使用python manage.py collectstatic
命令將所有靜態文件(即應用程序根目錄中名為static/
的文件夾中的任何內容,以及STATICFILES_DIR
中的STATICFILES_DIR
)移動到STATIC_ROOT
定義的文件夾。 然后讓您的網絡服務器在STATIC_URL
提供這些文件(django不會處理,實際上django文檔似乎建議您甚至不使用與服務django應用程序相同的網絡服務器)。
您可以將靜態文件放置在所需的任何位置,並由django對其進行管理,只需在STATICFILES_DIR元組中包含目錄的位置即可。
看一看在文檔上提供靜態文件。 (我假設您正在使用django 1.4)
您不應將媒體文件放在模板目錄中。 每個應用使用一個媒體目錄(在這種情況下為靜態),以便您的設置文件可以找到它,請參閱Django目錄結構?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.