我刚刚将存储后端更改为Amazon S3,我意识到我的后台未加载到我的网站.我查看并意识到在我的CSS(实际上是SASS)中我已经指定了后台URL(static/mysite/images/background.gif).
我想知道如何解决这个问题.当然我可以将它改为我的新静态URL,但这似乎是一种不好的做法.所以我尝试{{ STATIC_URL }}在我的bodyHTML中加载我的背景图像,但是在repeat: no-repeat;渲染我的实际CSS 之前它首先渲染我的背景,导致背景在CSS加载时在整个屏幕上重复.无论如何,我不喜欢将我的风格混合到我的文档中.
那么在Django中为背景图像提供相对路径的最佳方法是什么?我应该将CSS设置为模板,并通过视图指向它吗?这似乎也很混乱.
或者我应该忘记让它与static_url无关,只是硬编码我的CSS中的东西?
当我尝试python manage.py test在我的Django(1.4)项目中运行时,我收到错误:
ERROR: test_site_profile_not_available (django.contrib.auth.tests.models.ProfileTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/contrib/auth/tests/models.py", line 29, in test_site_profile_not_available
del settings.AUTH_PROFILE_MODULE
File "/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/utils/functional.py", line 215, in __delattr__
delattr(self._wrapped, name)
AttributeError: AUTH_PROFILE_MODULE
Run Code Online (Sandbox Code Playgroud)
这是记录在一个Django的bug,用recomendation只测试特定的应用程序,而不是全部.但是我的项目没有应用程序,models.py只是简单地驻留在项目根目录中.要在Django中测试特定的应用程序,它看起来像这样:
$ ./manage.py test animals
Note that we used animals, not myproject.animals.
Run Code Online (Sandbox Code Playgroud)
意味着无法指定要测试的根目录.我如何测试我的项目目录?
django django-contrib django-testing django-contenttypes django-1.4
我正在按照本教程进行操作,以便在heroku上运行celery和django.
但是,当我输入worker的指定代码时,我在日志中收到此错误:
2011-12-22T05:31:56+00:00 heroku[web.1]: Starting process with command `python canada/manage.py run_gunicorn -b "0.0.0.0:47336" -w 3`
2011-12-22T05:31:56+00:00 app[web.1]: Unexpected error: (<type 'exceptions.NameError'>, NameError("name 'DATABASES' is not defined",), <traceback object at 0x11a9560>)
2011-12-22T05:31:56+00:00 app[web.1]: Traceback (most recent call last):
2011-12-22T05:31:56+00:00 app[web.1]: File "canada/manage.py", line 11, in <module>
2011-12-22T05:31:56+00:00 app[web.1]: import settings
2011-12-22T05:31:56+00:00 app[web.1]: File "/app/canada/settings.py", line 51, in <module>
2011-12-22T05:31:56+00:00 app[web.1]: CELERY_RESULT_DBURI = DATABASES['default']
2011-12-22T05:31:56+00:00 app[web.1]: NameError: name 'DATABASES' is not defined
2011-12-22T05:31:57+00:00 heroku[slugc]: Slug compilation finished
2011-12-22T05:31:57+00:00 heroku[web.1]: State …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的django模型中的一些字段大写,当它们被保存时.看看这个有这个答案的问题:
class Blog(models.Model):
name = models.CharField(max_length=100)
def save(self):
self.name = self.name.title()
super(Blog, self).save()
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但是,在每次保存时,如果我想多次重复这一点,这需要一些额外的输入.因此,我想创建一个函数,在保存步骤中将字段作为输入并将它们重新保存为大写.所以我写了这个来测试它:
def save(self):
for field in [self.first_name, self.last_name]:
field = field.title()
super(Artist,self).save()
Run Code Online (Sandbox Code Playgroud)
但是,如果我之前想过它,我会意识到这只是覆盖field变量.我想循环一个变量列表来改变它们.我知道有些函数会在不使用的情况下更改值=.他们如何做到这一点?我能做到吗?
或者有一些更简单的方法来做我正在做的事情?我走错了路?
解决方案:从第一个答案开始,我做了这个功能:
def cap(self, *args):
for field in args:
value = getattr(self, field)
setattr(self, field, value.title())
Run Code Online (Sandbox Code Playgroud)
在我的模特中:
def save(self):
cap(self,'first_name', 'last_name')
super(Artist,self).save()
Run Code Online (Sandbox Code Playgroud)