我想知道如何将变量传递给我的所有模板,而不是在我的views.py文件中的每个方法上重复相同的代码?
在下面的示例中,我想为Web应用程序中的所有模板提供类别(类别对象数组).
Eg: I would like to avoid writing 'categories':categories on every method. Is it possible?
Run Code Online (Sandbox Code Playgroud)
一种观点方法
def front_page(request):
categories = Category.objects.all()
if is_logged_in(request) is False:
return render_to_response('users/signup.html', {'is_logged_in': is_logged_in(request), 'categories':categories}, context_instance=RequestContext(request))
else:
return render_to_response('users/front_page.html', {'is_logged_in': is_logged_in(request), 'categories':categories},context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
另一种观点方法
def another_view_method(request):
categories = Category.objects.all()
return render_to_response('eg/front_page.html', {'is_logged_in': is_logged_in(request), 'categories':categories},context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud) 我在Google App Engine上使用Django-nonrel,这迫使我使用logging.debug()而不是print().
"记录"模块由Django提供,但我很难使用它而不是print().
例如,如果我需要验证变量x中保存的内容,我会把
logging.debug('x is: %s' % x).但是如果程序很快崩溃(没有刷新流),那么它永远不会打印出来.
因此,对于调试,我需要在程序退出错误之前刷新debug(),这不会发生.
我正在使用Django-nonrel和注册应用程序.事情似乎工作正常,除非我尝试重置密码.当点击发送给我的重置密码链接时,Django会产生错误信息:
password_reset_confirm() got an unexpected keyword argument 'uidb36'
Run Code Online (Sandbox Code Playgroud)
我的问题:有没有人看过它,知道什么是治愈方法?
编辑:
这个问题是由registration\auth_urls.py引起的 - 它们复制了django\contrib\auth\urls.py中的条目,在Django-nonrel中循环修补了该文件的版本.
任何想法为什么它在那里,我可以实际删除它或修复它否则?
很长一段时间以来,我一直在AppEngine上使用任务队列来安排任务,就像我应该的那样.
但我一直想知道的是如何为此编写测试?到目前为止,我只是进行了测试,以确保在排队任务的API上不会发生错误,然后为执行任务的API编写更合适的测试.
然而,最近我开始感到有点不满意,我正在寻找一种方法来实际测试正确的任务已被添加到正确的队列.希望通过部署代码并希望获得最佳代码,可以做得更好.
我正在使用django-nonrel,如果这与答案有关.
回顾一下:如何编写单元测试以确认任务已排队?
首先,我是新手.我正在运行带有Python 2.7的Ubuntu 11.04,所以我在不同的目录中安装了Python2.5,以便在Google App Engine上运行Django-Non-Rel.我做了留言簿教程,现在我正在尝试添加管理员权限但是当我输入正确的用户名时:密码Django认为它不正确.它在部署到GAE时甚至不起作用.如果你知道的话请捅我正确的方向.
我补充说:
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
)
INSTALLED_APPS = (
...
'django.contrib.admin',
....
)
Run Code Online (Sandbox Code Playgroud)
编辑
我也补充说
url(r'^ admin /',include(admin.site.urls)),
到子项目目录中的urls.py.
EOEDIT
然后我创建了超级用户和同步数据库:
> python2.5 xxx-xxx-guestbook/manage.py createsuperuser python2.5
> xxx-xxx-guestbook/manage.py syncdb
Run Code Online (Sandbox Code Playgroud)
然后运行应用程序,无法登录.我创建了多个不同的超级用户,总是有相同的结果.
EDIT2
感谢大家尝试提供帮助,但不幸的是,所提供的解决方案都没有解决问题.我决定先自己学习Django,然后转换到GAE Django-nonrel,所以这个问题不再适用了.我还应该选择一个答案给某人一些积分吗?
我在本地化django-nonrel项目时遇到了问题,该项目已部署到GAE.因为GAE,我必须将所有内容放入我的项目文件夹中,所以它看起来像这样
project
+ django
+ dbindexer
+ registration
+ myapp
...
+ locale
+ templates
Run Code Online (Sandbox Code Playgroud)
我在templates目录和目录中有字符串本地化myapp.当我python manage.py makemessages -l en --ignore django\*从项目目录运行时,它会爬过项目的所有目录,包括django,所以我得到了一个非常大的po文件.我从模板中找到了我的字符串,以及来自django目录的所有字符串.
在--ignore(或者只是-i)之后,我尝试了pu django django/*,但没有改变.有任何想法吗?
我正在尝试将Django nonrel项目用于谷歌应用引擎.我按照此处的描述设置了测试项目.我为我的静态文件添加了一个名为"static"的项目的新文件夹.对于app.yaml文件,我添加了行;
- url: /static
static_dir: static
Run Code Online (Sandbox Code Playgroud)
我无法访问我的静态文件.我是否需要进行其他配置?
Thx提前.
我是在heroku上的django mongodb初学者[addon:mongolab].
heroku run python manage.py syncdb
Run Code Online (Sandbox Code Playgroud)
运行python manage.py syncdb连接到终端... up,run.2332创建表...
OperationFailure: database error: not authorized for query on database.system.namespaces consider editing privileges on the basis of data mongo
Run Code Online (Sandbox Code Playgroud)
.
>use admin
>db.addUser({ user: "myadmin", pwd: "1234", roles: ["userAdminAnyDatabase"] })
Run Code Online (Sandbox Code Playgroud)
但得到:
Error: couldn't add user: not authorized on admin to execute command
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我正在尝试使用django-nonrelappengine并尝试使用a djangotoolbox.fields.ListField来实现多对多关系.正如我在文档中读到的那样ListField,您可以使用某种方法为djamgo-nonrel制定解决方法,而不支持多对多关系.
这是我的模型的摘录:
class MyClass(models.Model):
field = ListField(models.ForeignKey(AnotherClass))
Run Code Online (Sandbox Code Playgroud)
因此,如果我正确地做到这一点,我将创建一个外键列表到另一个类,以显示与另一个类的多个实例的关系
通过这种方法一切正常......没有例外.我可以在代码和视图中创建`MyClass'对象.但是当我尝试使用管理界面时,我收到以下错误
No form field implemented for <class 'djangotoolbox.fields.ListField'>
Run Code Online (Sandbox Code Playgroud)
所以我虽然会尝试以前没有做过的事情.创建我自己的字段.实际上我自己的形式是MyClass在管理界面中编辑实例.这是我做的:
class MyClassForm(ModelForm):
field = fields.MultipleChoiceField(choices=AnotherClass.objects.all(), widget=FilteredSelectMultiple("verbose_name", is_stacked=False))
class Meta:
model = MyClass
Run Code Online (Sandbox Code Playgroud)
然后我将MyClassForm表单传递给管理界面
class MyClassAdmin(admin.ModelAdmin):
form = MyClassForm
admin.site.register(MyClass, MyClassAdmin)
Run Code Online (Sandbox Code Playgroud)
我虽然这会起作用,但事实并非如此.当我进入管理界面时,我得到了与以前相同的错误.谁能告诉我在做什么错在这里...或者,如果您有任何其他建议或使用的成功案例ListField,SetField等从djangotoolbox.fields在管理界面,将是非常赞赏.
我正在尝试在GAE(Google App Engine)上设置django-nonrel - 按照此处的步骤进行操作http://www.allbuttonspressed.com/projects/djangoappengine#installation
测试应用程序很棒 -
我能够在应用程序中使用缓存API,但对于测试和shell却不是这样:
试图from django.core.cache import cache在shell中给我:
>>> from django.core.cache import cache
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "django-testapp/django/core/cache/__init__.py", line 182, in <module>
cache = get_cache(DEFAULT_CACHE_ALIAS)
File "django-testapp/django/core/cache/__init__.py", line 180, in get_cache
return backend_cls(location, params)
File "django-testapp/django/core/cache/backends/memcached.py", line 154, in __init__
import memcache
ImportError: No module named memcache
Run Code Online (Sandbox Code Playgroud)
同样,尝试也 ./manage.py test以同样的方式失败
任何想法,为什么./manage runserver工作正常,但./manage shell还是./manage test无法导入缓存?
django-nonrel ×10
django ×7
python ×3
django-admin ×1
heroku ×1
listfield ×1
logging ×1
mongodb ×1
unit-testing ×1