Django如何向基于类的视图传递额外的上下文

Django如何向基于类的视图传递额外的上下文

一旦你知道要注意什么,将上下文从基于类的视图传递到你的模板中是很容易的。有两种方法可以做到这一点–一种是get_context_data,另一种是通过修改extra_context变量。让我们看看如何逐一使用这两种方法。

解释:

用一个例子说明如何使用get_context_data方法和extra_context变量将上下文传递给你的模板。考虑一个名为geeksforgeeks的项目,它有一个名为geeks的应用程序。

方法1 :使用get_context_data方法

在models.py里面添加以下代码。

from django.db import models
 
# Create your models here.
class YourModel(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    def __str__(self):
        return self.first_name

创建这个模型后,我们需要运行两个命令,以便为其创建数据库。

python manage.py makemigrations
python manage.py migrate

在应用程序目录(geeks)中创建名为templates的文件夹,在该文件夹中添加名为Intro.html的文件并添加以下代码。

<!-- Intro.html -->
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Intro</title>
  </head>
  <body>
    <h1>All users name </h1>
    {% for user in users %}
    {{user.first_name}}
    {% endfor %}
  </body>
</html>

在views.py文件中加入以下代码。

from django.views.generic.base import TemplateView
from .models import YourModel
 
class Intro(TemplateView):
    template_name = 'Intro.html'
    def get_context_data(self,*args, **kwargs):
        context = super(Intro, self).get_context_data(*args,**kwargs)
        context['users'] = YourModel.objects.all()
        return context

在名为geeksforgeeks的项目的urls.py文件中添加以下代码。

from django.contrib import admin
from django.urls import path
from geeks.views import Intro
 
urlpatterns = [
    path('admin/', admin.site.urls),
    path('',Intro.as_view(),name="intro")
]

方法2:使用extra_context变量

重写views.py的flle,加入以下代码。

from django.views.generic.base import TemplateView
from .models import YourModel
 
class Intro(TemplateView):
    template_name = 'Intro.html'
    extra_context={'users': YourModel.objects.all()}

通过这两种方法,你会看到相同的输出。让我们检查一下http://localhost:8000/,在这之前,不要忘记给你的模型添加一些数据。

How to add data to your model
   Django ORM – Inserting, Updating & Deleting Data

输出 –

如何向基于类的视图传递额外的上下文(Django)?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程