我的本地机器在Ubuntu 8.10上运行Python 2.5和Nginx,Django是从最新的开发中继构建的.
对于我请求的每个URL,它会抛出:
TemplateDoesNotExist位于/ appname/path appname/template_name.html
Django尝试按以下顺序加载这些模板:*使用loader django.template.loaders.filesystem.function:*使用loader django.template.loaders.app_directories.function:
TEMPLATE_DIRS('/usr/lib/python2.5/site-packages/projectname/templates',)
在这种情况下,它是否在寻找/usr/lib/python2.5/site-packages/projectname/templates/appname/template_name.html?奇怪的是这个文件确实存在于磁盘上.为什么Django找不到它?
我在Ubuntu 9.04上使用Python 2.6在远程服务器上运行相同的应用程序,没有这样的问题.其他设置是相同的.
我的本地计算机上是否有任何配置错误,或者可能导致此类错误的内容我应该查看?
在我的settings.py中,我指定了:
SETTINGS_PATH = os.path.normpath(os.path.dirname(__file__))
# Find templates in the same folder as settings.py.
TEMPLATE_DIRS = (
os.path.join(SETTINGS_PATH, 'templates'),
)
Run Code Online (Sandbox Code Playgroud)
它应该寻找以下文件:
以上所有文件都存在于磁盘上.
解决了
它在我尝试后现在有效:
chown -R www-data:www-data /usr/lib/python2.5/site-packages/projectname/*
Run Code Online (Sandbox Code Playgroud)
真奇怪.我不需要在远程服务器上执行此操作以使其工作.
有没有一种简单的方法可以关闭Django开发服务器中的静态文件缓存?
我正在使用标准命令启动服务器:
$ python manage.py runserver
Run Code Online (Sandbox Code Playgroud)
我已经settings.py配置为从/static我的Django项目目录中提供静态文件.我还有一个中间件类,它将Cache-Control头设置must-revalidate, no-cache为开发,但这似乎只会影响不在我的/static目录中的URL .
我是Django的新手,我正在尝试建立一个非常简单的Django应用程序.
现在,我要读到Django在线书籍的第5章:http://www.djangobook.com/en/2.0/chapter05/
在我开始尝试数据库之前,我现在要做的就是将一些简单的CS和J添加到应用程序中.
所以问题是,我该怎么做?我只有一个应用程序,我只需要一个css文件夹中的main.css和一个js文件夹中的main.js.
我检查了https://docs.djangoproject.com/en/1.3/howto/static-files/#staticfiles-in-templates页面,但阅读和阅读后,似乎没有很多工作在例子方面.
如何导入stylesheets/css(是否有像CakePHP这样的帮手?),我在哪里放置CSS和JS文件,是否需要配置静态东西?
更新:链接:Django中的渲染CSS没有多大帮助.主要是因为它对我不起作用,但我也特别不喜欢"if debug"部分.当我搬到prod时会发生什么?为什么我的媒体文件夹对于prod和本地开发者的定义不同?它不应该是相对的,甚至不是同一个地方吗?
我有一个大量定制的Django管理员,为我的每个ModelAdmins加载一个自定义JS文件非常简单:
class MyModelAdmin(admin.ModelAdmin):
class Media:
js = ('js/admin/mymodel.js',)
Run Code Online (Sandbox Code Playgroud)
但是我如何为管理"主页"执行此操作,其中列出了我的所有管理模型?
更新#1:修改我的问题,因为如果我不能有效地包含Django的jQuery,下面的解决方案就不那么有用了.那么,我如何在JS文件中包含Django的jQuery?如果我用我的代码包装(就像我在其他的ModelAdmin JS文件中那样):
(function ($) { //... })(django.jQuery);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ReferenceError:未定义django.
谢谢.
更新#2:我能够通过以下答案成功地包含Django的jQuery:https://stackoverflow.com/a/10584539/585783