简介:今天,首席CTO Note将与您分享Django与静态文件有关的内容。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
建议使用新版本的Django进行开发。可以肯定的是,Django 1.4之后的Django 1.4的版本应支持以下设置
注意:Django 1.4版本需要在项目/urls.py的底部添加:
来自django.contrib.staticfiles.urls导入staticfiles_urlpatterns urlpatterns += staticfiles_urlpatterns()
Django 1.5 -django 1.8不需要添加上述代码。
settings.py静态文件相关示例代码和说明:
#静态文件(CSS,JavaScript,图像)
static_url ='/static/'#运行Python Manage.py collectStatic#static_root文件夹用于复制所有staticfiles_dirs中的所有文件,以及每个应用程序中的静态文件。join(base_dir,'Collected_static')#将静态文件存储在项目中的其他文件夹可用于将公共静态文件存储在项目中。Static_root#如果您不想使用staticfiles_ders,则不能使用它,您可以使用它,可以还放入staticfiles_dirs =(os.path.join(base_dir,“ comm_static”),'/path/path/path/erther/static/',#您到达时可以编写此行)#这是默认设置。Django将在staticfiles_dirs中的文件夹中找到一个文件和每个应用程序下的静态文件夹。))))
静态文件放在相应的应用程序下的静态文件夹中,或staticfiles_dirs中的文件夹。
当debug = true时,django可以自动找到放置在其中的静态文件。(django“ search设备”在staticfiles_finders中,找到找到它的过程,查找该过程的过程类似于在使用xxx的过程中使用xxx的过程在Python中导入XXX)。
示例项目dj18 statatic,在应用程序应用下的静态中有一个zqxt.png图片:
dj18statatic b-博客│├├─Init__。py│ -admin.py││-─..m- - __INIT __。py│├─................默认情况下,您会发现此文件夹││└-[zqxt.png]│-tests.py│││└└└└└└└已添加到staticfiles_ders│J--[JQuery.js]│├│├│├│├│├──-py│├─—settings.py│-urls.py│ - w - manage.py- manage..pypy
当debug = true in settings.py中时,打开静态文件以打开开发服务器python manage.py runserver直接访问 /static/zqxt.png。
您还可以在settings.py中指定所有应用程序共享的静态文件,例如jquery.js等。
staticfiles_dirs =(os.path.join(base_dir,“ commit_static”),),),),),),),),),),),),),),)
将jquery.js放在common_stative/js/中,以便您可以在/static/js/jquery.js中访问它!
2. static_root:这是静态文件存储目录的配置。另一个角色是运行命令以收集静态文件(大约在命令的一部分),并最终收集并存储静态文件的位置。请注意,此配置仅在false中的debug =有效(生产环境)(关于稍后说话的原因)。
4. staticfiles_dirs:在实际项目开发中,如果我们的静态文件存储在一个或多个目录中,则可以将列表定义为存储静态文件。Django的默认配置没有此配置。当项目下有一个或多个静态资源的目录时,它非常适合此定义。注意,只有当Debug = true时,此配置仅是有效的(开发环境)
8.模板:定义HTML模板文件存储目录。如果使用Pycharm的IDE,则可以根据配置自动创建模板目录。Pycham将自动帮助我们配置。如果没有配置,您需要手动创建手动创建。当然,您也可以选择自定义此目录
9. CollectStatic:在项目部署期间,我们还需要收集静态文件。如果您可以手动收集静态文件,则无疑的工程量很大,部署后,必须将调试更改为debug = false。将会有一个问题无法加载CSS。因此,在项目部署之前,需要此操作。
django的django.contrib.staticfiles提供了收集静态文件的命令:python manage.py collectionstatic。执行命令后,将在配置的static_root中收集静态文件
我想将以前的ASP.NET网站移植到Django,并发现Django似乎得到了静态资源的支持。您无法根据相对路径直接找到某些配置,找到很多解决方案,并按以下方式进行整理:
1. Django的静态资源配置与版本!InterSectionIntersectionRemember!InterSectionIntersection1.3先前和将来的配置不同!IntersectionSectionTrestection以下内容仅适用于Django1.9;
2.安装在设置中
应用
包括'django.contrib.staticfiles';
3. static_url in steratings.py是应用程序目录中静态文件所在的文件夹的相对路径。默认值为/静态/可以自定义;
4.调用时使用以下表格:
{%
加载
静止的
%}
IMG
src =“ {%
静止的
“ my_app/myexample.jpg”
%}“”
alt =“ [#0#] [#1#]” //
导入JS,IMG和其他静态文件后导入错误:
文件
“ D:python27libmimetypes.py”,“”
线
249,
在
enum_types
CTYPE
=
ctype.encode(default_encoding)
#
忽略
在
3.x!
Unicodecodeerror:
'ascii'
编解码器
cant
解码
字节
0xB0
在
姿势
1:
序数
不是
在
范围(128)
[27/dec/2015
15:26:32]
“得到
/static/assets/img/nextpage_small_grey.jpg
http/1.1”
500
59
在python安装目录中的lib/site包装中添加文件sitecustomize.py,找到解决方案的密钥错误文件mimetypes.py.py。
进口
系统
sys.setdefaultencoding(“ CP1251”)
我设置的编码格式是UTF-8,我不知道其他格式是否可以。Restart操作和成功。
编辑设置:
Media_root和Media_url表示用户上传的文件。它可以理解为存储可变文件的文件夹。
这两个参数的用途是什么?
在诸如Django的FileField和ImageField之类的模型类中,有upload_to参数可供选择。
上传文件后,它将自动保存到:OS.Path.join(Media_root,upload_to)。在此示例中
Media_url表示用户可以通过可以访问的URL访问这些上传的文件资源。
在此示例中,该计算机的地址为:
然后通过:文件名可以访问相关的上传图片或其他文件。
static_root和static_url是网站上使用的静态图片,CSS,JS和其他文件的保存地址。可以理解,网站操作期间将不再更改文件的文件夹删除或添加)
static_url,类似于Media_url;当setter_url为“/static/”时,通过:文件名可以访问相关的静态文件。
static_root是一个相对特殊的文件夹。这是Django的开发模型与部署模型最不同的地方。
通常,在开发模式下,我们可以在我们的项目下建立相应的应用程序,然后在每个应用程序下设置相应的静态文件夹。在DEBUG = true中,Django将自动为我们找到这些静态文件(每个应用程序)并在WebPage.ever,在部署模式下,Django认为这些任务更有效地由Web服务器运行。
因此,部署时,我们需要运行:
此命令将将每个应用程序中的文件复制到静态目录的文件为static_root文件夹。
如果在部署模式下,(debug = false)访问相关的网页(例如:文件名,将无法访问django下的每个应用程序中的静态文件夹,而是在static_root中指定的文件夹。
为了在部署模式下正确使用它,我们还需要将以下内容添加到URLS.PY:
这相当于在“静态”开头的链接时告诉如何处理Django。
理解上述内容后,让我们在前端显示图片。
编写显示视图功能以传递动态图片:
然后写show.html:
如果您只是使用静态,则配置将比媒体少一个步骤,并且将比较以下内容。当它到达静态时,您必须不得不谈论Django的开发环境和部署环境之间的区别。django配置文件设置.py调试变量是主要区别。debug = true表示,在开发环境(调试模式)下,在开发环境下(调试模式),调试模式,调试= false),相反,它用于正式部署环境中。两个,例如缓存,错误信息的方式等以及今天的静态文件的处理方法。开发环境中的静态文件由Django随附的Web服务器处理(这将是更多方面)。如果调试设置为false,则Web服务器带有Django自然不会处理静态文件。静态文件已移交给NGINX,可以处理Apache(这将更有效)。
让我们谈谈开发环境中静态配置的方式。
这次,我主要使用Django版本1.4版本对其进行配置。必须提前声明这一点,因为1.4之后,Django的项目结构发生了很大变化。如果将以下配置方法放在Django 1.3上,则绝对不合适,值得注意。StaitC配置仅在settings.py中进行。
调试= true
这种设置环境在开发环境中。
然后自己构建一个可变site_root。该变量不是必需的,但是为了重复使用,可以随机使用该名称。
导入操作系统
sit_root = os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')
变量值项的根目录是settings.py的存储位置。
然后将值分配给静态文件变量,告诉Django,静态文件在哪里
static_root = os.path.join(site_root,'static')
说到哪个,我应该谈论项目文件结构。例如,这很容易让人,这段时间的项目结构如下:
我的项目
- - 我的项目
----------__init__.py
--------设置
-------- urls.py
-------- wsgi.py
- - 博客
----------__init__.py
--------模型
--------视频
------- test.py
- - 静止的
-------- CSS
-------------- style.css
-------- JS
------------------- jQuery.js
- - - - 图片
--------------------我JPG
- - 媒体
--------上传
注意项目的结构,您会发现Site_root是
我的项目
- - 我的项目
路径。
static_root是
我的项目
- - 媒体
路径。
好的,然后配置说
static_url ='/static/'
模板中使用的静态文件URL的后缀。
最后一个关键部分是staticfiles_dirs配置以下
staticfiles_dirs =(
(“ css”,os.path.join(static_root,'css')),),),),),),
(“ JS”,OS.Path.Join(static_root,'js'),
(“图像”,os.path.join(static_root,'images'),),
治愈
简而言之,静态文件夹在项目中使用了三个CSS JS Images文件夹(请参阅项目结构)。他们的道路是:
os.path.join(static_root,'css'),os.path.join(static_root,'js'),os.path.join(static_root,'images');
我们给了他们三个别名CSS,JS,图像(您可以随意给出它,但是为了简单的记忆,我们的原始名称指定别名)
此时,Staitc已完成,并且无需在URLS.PY中配置相关内容。Django将自动找到分析静态文件的正确途径。与媒体相比,配置中的一步也要少。
配置后,您可以在模板中正常使用静态文件。如何使用?请使用模板说明。
呢Doctype HTML
html lang =“ zh-cn”
头
meta charset = utf-8
titlestaitc示例/标题
链接rel =“ stylesheet” type =“ text/css” href =” https://www.shouxicto.com/article/ {{static_url}} css/style.css/style.css“媒体”媒体=“屏幕” //
脚本类型=“ text/javascript” src =“ https://www.shouxicto.com/article/ {{static_url}} js/jquery.js”/script
/头
身体
img src =“ https://www.shouxicto.com/article/ {{static_url}} images/me.jpg”“ alt =” [#2#]
/身体
/html
注意{{static_url}}是在设置中使用static_url变量,然后分析:/static/。
{{static_url}} css/style.css最终解析了我们想要的内容:/static/css/style.css,django将根据配置文件找到相应的文件。
结束时,让我们谈谈如何建立正式的部署环境:
调试= false
首先将调试设置为false,将DJANGO环境视为正式的非示例模式,然后Django将不再单独处理静态页面。最后,将静态文件移交给nginx apache进行处理。
讨论NGINX如何正确分析静态文件。在服务器中添加本地静态文件处理
位置 /静态 / {
root/home/www-data/twogoo/myproject/;
}
还有一个容易犯错误的地方,这是路径。一些学生经常指定这样的路径:/home/www-data/twogoo/myproject/staitc/;因此,nginx不应该找到静态文件,因为nginx将运行// home/www-data/twogoo/myproject/staitc/staitc/找到它。请注意,在静态文件处理中,您会更加顺畅。
结论:以上是首席CTO注释为所有人编写的Django的所有内容。Django是静态文件的所有内容。感谢您阅读本网站的内容。我希望它对您有所帮助。