Mac os下Django settings.py文件配置以及图片文件上传无法显示问题

来源:互联网 发布:数据呈现方式 专利 编辑:程序博客网 时间:2024/06/03 21:41

最近一直在学Django但是大小问题层出不穷,先举例一些问题,可能有些菜鸟级别的问题。。。如果您没有遇到如下问题也就不必看了

一、实现了网页间的跳转,但是相关的js文件居然不起作用

静态文件交由Web服务器处理,Django本身不处理静态文件。因此需要在Django里做些配置才能使用这些静态文件。

Django网站开发的机制是静态文件需要单独存放,多媒体文件需要配置多媒体文件的路径并且也需要单独存放。

我是用PyCharm开发Django工程,自动生成的settings.py文件似乎少了不少的提示,因此我只在此列出我遇到的没有的配置。

上述问题的解决办法正如Django所说的,静态文件以及多媒体文件需要单独存放。

html文件需要存放在templates文件夹内,js、css文件则需要存放在static文件内,以settings.py文件所在的文件夹说起,static与templates文件夹应该位于settings.py文件所在的文件夹的同一级下,注意是其所在的文件夹的同一级,从以下配置代码可以看出如此。

1、添加TEMPLATE_DIRS 

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), '..', 'templates').replace('\\', '/'),
    os.path.join('templates'),
)

2、我们需要在settings.py中添加PROJECT_ROOT,如其名即为当前工程的路径,可按以下方式配置

PROJECT_ROOT = os.path.realpath(os.path.dirname(__file__))

3、添加STATIC_ROOT以及STATIC_URL还有STATIC_DIRS

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATICFILES_DIRS = (
    os.path.join(os.path.dirname(__file__), '..', 'static').replace('\\','/'),
    os.path.join('static'),
)

4、还需要在urls.py文件中添加一个url模式匹配的路径为了能够成功调用js、css、image、media的方法。

if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$', 'django.views.static.serve', {
        'document_root': settings.MEDIA_ROOT}))

二、关于上传的图片以及其他文件或者多媒体文件无法显示的问题

你需要配置MEDIA_ROOT和MEDIA_URL

MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media')
MEDIA_URL = '/media/'

由代码可见,media文件夹在settings.py文件夹下,为其一个子文件夹


三、个人见解

我也是个小菜鸟,并不是很懂上面配置的原理和机制,因此不在这里献丑了,仅仅是做为解决问题的方法给大家展示,我也在文件配置上面头疼了一整天,无法显示各种文件和图片,在官方的文档中也没有找到,以上的配置是我在stackoverflow、百度、CSDN找到的解决方法,仅仅在此汇总以下,以上配置方法对于我的工程来说已经解决了问题,如果您还有上面未提及的问题只能自行解决了。。。



0 0
原创粉丝点击