Django中的靜態(tài)文件管理過程解析
Static files管理
static files指一些用到的像css,javascript,images之類的文件。
在開發(fā)階段:
1.在settings設(shè)置INSTALLED_APPS中添加'django.contrib.staticfiles'。
2.將STATIC_URL設(shè)置為'/static/'。
3.將某個app要用的靜態(tài)文件放置到my_app/static/my_app中,例如my_app/static/my_app/my_image.jpg.
當(dāng)然也可以直接放在my_app/static中,但這樣的話,如果在不同的app中有相同名字的靜態(tài)文件,就會產(chǎn)生沖突。
4.模板中使用
{% load static %}
<img src="{% static 'my_app/myexample.jpg' %}" alt="My image"/>
5.如果有些不是某個app特用的靜態(tài)文件,可以建立static文件夾將靜態(tài)文件放置其中,settings設(shè)置:
STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"), '/var/www/static/', )
這樣,在開發(fā)環(huán)境中,settings.DEBUG設(shè)置為True時,運行runserver就可以訪問靜態(tài)文件了。
如果INSTALLED_APPS中沒有包含'django.contrib.staticfiles',需要手動運行django.contrib.staticfiles.views.serve()。
from django.conf import settings
from django.contrib.staticfiles import views
if settings.DEBUG:
urlpatterns += [
url(r'^static/(?P<path>.*)$', views.serve),
]
或者
from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # ... the rest of your URLconf goes here ... ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
以上都在DEBUG設(shè)置為True時起作用。
在生產(chǎn)環(huán)境中,就需要使用反向代理服務(wù)器直接訪問靜態(tài)文件,需要將靜態(tài)文件轉(zhuǎn)移到代理服務(wù)器可以訪問的文件夾,設(shè)置
STATIC_ROOT = "/var/www/example.com/static/"
然后運行
python manage.py collectstatic
將各個app內(nèi)的靜態(tài)文件及STATICFILES_DIRS內(nèi)的靜態(tài)文件收集起來放置到STATIC_ROOT中由服務(wù)器apache或nhinx管理即可。
Media管理
MEDIA:指用戶上傳的文件,比如在Model里面的FileFIeld,ImageField上傳的文件。
假如有個Model
from django.db import models class Car(models.Model): name = models.CharField(max_length=255) price = models.DecimalField(max_digits=5, decimal_places=2) photo = models.ImageField(upload_to='cars')
設(shè)置MEDIA_ROOT=os.path.join(BASE_DIR , 'media'),用來存儲用戶上傳的文件
MEDIA_URL=/media/,為MEDIA_ROOT中的文件建立url地址。
當(dāng)建立一個Car實例時,Car的ImageField字段圖片就存到media/cars文件夾里面
>>> car = Car.objects.get(name="57 Chevy") >>> car.photo <ImageFieldFile: chevy.jpg> >>> car.photo.name u'cars/chevy.jpg' >>> car.photo.path u'/media/cars/chevy.jpg' >>> car.photo.url u'/media/cars/chevy.jpg'
在模板中使用圖片
<img src="{{ car.photo.url }}" alt="My image"/>
在urls.py中使用 django.contrib.staticfiles.views.serve() view
from django.conf import settings #from myapp import settings
from django.conf.urls.static import static
urlpatterns = patterns('',
# ... the rest of your URLconf goes here ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
這樣就可以使用media文件了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Flask SQLAlchemy一對一,一對多的使用方法實踐
Flask-SQLAlchemy一對一,一對多的使用方法實踐,需要的朋友可以參考下2013-02-02
selenium設(shè)置瀏覽器為headless無頭模式(Chrome和Firefox)
這篇文章主要介紹了selenium設(shè)置瀏覽器為headless無頭模式(Chrome和Firefox),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
一個基于flask的web應(yīng)用誕生 組織結(jié)構(gòu)調(diào)整(7)
一個基于flask的web應(yīng)用誕生第七篇,這篇文章主要介紹了組織結(jié)構(gòu)的調(diào)整,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04
Python3 執(zhí)行Linux Bash命令的方法
今天小編就為大家分享一篇Python3 執(zhí)行Linux Bash命令的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07

