Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django 2.1将变量传递给模板,_Python_Django - Fatal编程技术网

Python Django 2.1将变量传递给模板,

Python Django 2.1将变量传递给模板,,python,django,Python,Django,这里有一个关于将变量传递到Django模板的问题。目标是根据照片类型过滤一组照片。我最初想从S3和它所在的文件夹中完成它,但这超出了我目前的技能。我只是创建了不同的url的帐户。我遇到的问题是,我希望将变量传递到扩展base_layout.html的模板中,但它不会为该变量呈现任何内容。我只是不明白怎么做 Model.py from django.db import models # Create your models here. class Gallery(models.Model):

这里有一个关于将变量传递到Django模板的问题。目标是根据照片类型过滤一组照片。我最初想从S3和它所在的文件夹中完成它,但这超出了我目前的技能。我只是创建了不同的url的帐户。我遇到的问题是,我希望将变量传递到扩展base_layout.html的模板中,但它不会为该变量呈现任何内容。我只是不明白怎么做

Model.py

from django.db import models


# Create your models here.
class Gallery(models.Model):
    title = models.CharField(max_length = 50)
    body = models.TextField(max_length = 500)
    created = models.DateTimeField(auto_now_add = True)
    thumb = models.ImageField(default = 'default.jpg', blank = True)
    slug = models.SlugField(blank = True)
    order = models.CharField(max_length = 2, blank = True)

    def __str__(self):
        return self.title

    def body_preview(self):
        return self.body[:50]

class photoUrl(models.Model):
    url = models.CharField(max_length = 128)
    uploaded_on = models.DateTimeField(auto_now_add = True)

class Photos(models.Model):
    title = models.CharField(max_length = 50)
    picture = models.ImageField(blank = True)
    created = models.DateTimeField(auto_now_add = True)
    catagory = models.CharField(max_length=256, choices=[('wedding', 'wedding'), ('portrait', 'portrait'), ('landscape', 'landscape'), ('boudoir', 'boudoir'),], blank = True)

    def __str__(self):
        return self.title
views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.urls import reverse
from . models import Photos

# Create your views here.


def photo_wedding(request):
    photo_list = Photos.objects.filter(catagory = 'wedding').order_by('created')
    photoCat = 'Wedding'
    return render(request, 'gallery/gallery.html', {'photo_list' : photo_list}, {'photoCat' : photoCat})
url.py

from django.contrib import admin
from django.urls import path
from . import views

app_name='gallery'

urlpatterns = [
    path('wedding/', views.photo_wedding, name='wedding'),
    path('portrait/', views.photo_portrait, name='portrait'),
    path('landscape/', views.photo_landscape, name='landscape'),
    path('boudoir/', views.photo_boudoir, name='boudoir'),
]
gallery.html

{% extends 'gallery/base_layout.html' %}

{% load static %}

{% block gallery %}

    <div class="gallery" id="gallery">
        <div class="container">
            <div class="w3l-heading">

                <h3>{{photoCat}}</h3>

                <div class="w3ls-border"> </div>
            </div>
        </div>
{% endblock gallery %}
{%extends'gallery/base\u layout.html%}
{%load static%}
{%block gallery%}
{{photophoto}}
{%endblock库%}

你为什么要传递两本字典。只需添加一个键。这就是上下文数据

在基于类的视图中,您还可以重载方法
get\u context\u data

,该方法来自以下定义:

render(请求、模板名称、上下文=无、内容类型=无、状态=无、使用=无)
将给定的模板与给定的上下文词典相结合,并返回带有该呈现文本的HttpResponse对象

render方法将第一个参数作为
请求
,第二个参数作为
模板_name
,第三个参数是
上下文
,它是您选择传递给模板的字典类型,您可以使用键访问字典的所有值

因此,您的方法应如下所示:

def photo_wedding(request):
    photo_list = Photos.objects.filter(catagory = 'wedding').order_by('created')
    photoCat = 'Wedding'
    return render(request, 'gallery/gallery.html', {'photo_list' : photo_list, 'photoCat' : photoCat})
对于函数,第三个参数是上下文。上下文是用于向模板发送变量的字典。不需要通过两次口授

def photo_wedding(request):
    photo_list = Photos.objects.filter(catagory = 'wedding').order_by('created')
    photoCat = 'Wedding'
context={'photo_list':photo_list,'photo':photo}

返回渲染(请求'gallery/gallery.html',上下文)
收到,谢谢!真不敢相信我会这么做。我想孩子病了三天会造成精神上的损失。
    context = {'photo_list' : photo_list,'photoCat' : photoCat}
    return render(request, 'gallery/gallery.html', context)