我可以从django模板访问数据库吗?

eug*_*ene 1 database django templates

假设我有一个模型Photo与一个ImageField.

我尝试迭代模板中的所有照片对象{% for photo in Photo.objects.all %}.
什么都没有出现.

这不可能吗?

Mik*_*one 5

通常的方法是使用类似于以下内容的视图:

def photo_view(request):
    return render_to_response('app_name/photos.html', {
        'photos': Photo.objects.all()
        })
Run Code Online (Sandbox Code Playgroud)

然后模板(在app_name/templates/app_name/photos.html这个例子中)有类似的东西:

{% for photo in photos %}
Run Code Online (Sandbox Code Playgroud)

如果你真的想这样做{% for photo in Photo.objects.all %},那么你的视图代码必须Photo通过上下文传递:

def photo_view(request):
    return render_to_response('app_name/photos.html', {
        'Photo': Photo
        })
Run Code Online (Sandbox Code Playgroud)

请记住,这并不是一种更好的方法,因为模板语法比Python更具限制性.例如,{% for photo in Photo.objects.filter(...) %}模板中没有办法; 过滤需要在视图中进行.