簡體   English   中英

樣式表未從Django的相對路徑加載

[英]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目錄結構?

另請參閱Django管理,靜態和媒體文件中的混淆

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM