news 2026/6/10 7:53:00

Django 视图基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Django 视图基础

Django 视图基础

Django 视图是处理用户请求并返回响应的核心组件。视图可以是函数或类,通常定义在views.py文件中。

函数视图示例:

from django.http import HttpResponse def hello_world(request): return HttpResponse("Hello, World!")

类视图示例:

from django.views import View from django.http import HttpResponse class HelloWorldView(View): def get(self, request): return HttpResponse("Hello, World!")

URL 配置

视图需要通过 URL 配置映射到具体的路由。在urls.py中配置:

函数视图 URL:

from django.urls import path from .views import hello_world urlpatterns = [ path('hello/', hello_world), ]

类视图 URL:

from django.urls import path from .views import HelloWorldView urlpatterns = [ path('hello/', HelloWorldView.as_view()), ]

请求与响应

Django 视图通过request对象接收请求数据,并通过HttpResponse或其子类返回响应。

获取请求数据:

def show_data(request): name = request.GET.get('name', 'Guest') return HttpResponse(f"Hello, {name}!")

返回 JSON 响应:

from django.http import JsonResponse def json_response(request): data = {'key': 'value'} return JsonResponse(data)

模板渲染

Django 视图可以渲染 HTML 模板,动态生成页面内容。

配置模板:

  1. settings.py中确保TEMPLATES配置正确。
  2. 创建模板文件(如templates/my_template.html)。

渲染模板:

from django.shortcuts import render def template_view(request): context = {'variable': 'value'} return render(request, 'my_template.html', context)

类视图进阶

Django 提供了多种内置类视图简化常见任务,如ListViewDetailView等。

使用ListView

from django.views.generic import ListView from .models import MyModel class MyModelListView(ListView): model = MyModel template_name = 'my_model_list.html' context_object_name = 'objects'

使用DetailView

from django.views.generic import DetailView from .models import MyModel class MyModelDetailView(DetailView): model = MyModel template_name = 'my_model_detail.html'

表单处理

视图可以处理表单提交,验证数据并保存到数据库。

表单视图示例:

from django.shortcuts import render, redirect from .forms import MyForm def form_view(request): if request.method == 'POST': form = MyForm(request.POST) if form.is_valid(): form.save() return redirect('success_url') else: form = MyForm() return render(request, 'form_template.html', {'form': form})

认证与权限

Django 提供装饰器和混入类实现认证和权限控制。

使用@login_required

from django.contrib.auth.decorators import login_required @login_required def protected_view(request): return HttpResponse("Protected content")

类视图使用LoginRequiredMixin

from django.contrib.auth.mixins import LoginRequiredMixin from django.views import View class ProtectedView(LoginRequiredMixin, View): def get(self, request): return HttpResponse("Protected content")

文件上传

视图可以处理文件上传,保存文件到指定位置。

文件上传示例:

def upload_file(request): if request.method == 'POST' and request.FILES['file']: uploaded_file = request.FILES['file'] with open('uploads/' + uploaded_file.name, 'wb+') as destination: for chunk in uploaded_file.chunks(): destination.write(chunk) return HttpResponse("File uploaded successfully") return render(request, 'upload.html')
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 8:11:53

java进阶知识点

java回收机制 浅谈java中的反射 依赖注入的简单理解 通过接口的引用和构造方法的表达,将一些事情整好了反过来传给需要用到的地方~ 这样做得好处:做到了单一职责,并且提高了复用性,解耦了之后,任你如何实现&#xf…

作者头像 李华
网站建设 2026/6/10 13:52:32

Java MySQL 连接

Java MySQL 连接 本章节我们为大家介绍 Java 如何使用 使用 JDBC 连接 MySQL 数据库。 Java 连接 MySQL 需要驱动包,最新版下载地址为:http://dev.mysql.com/downloads/connector/j/,解压后得到 jar 库文件,然后在对应的项目中导…

作者头像 李华
网站建设 2026/6/10 15:09:25

Java进阶——IO 流

文章目录 Java进阶——IO 流 1、File 类的使用 1.1、File 常用构造器1.2、路径分隔符1.3、File 的常用方法 2、IO流原理及流的分类 2.1、IO流原理2.2、流的分类 3、IO流的体系结构4、节点流 4.1、FileReader 读入数据的操作4.2、FileWriter 写出数据的操作4.3、FileReader 和 …

作者头像 李华
网站建设 2026/6/10 19:30:15

值得收藏!Tool-to-Agent检索技术:解决大模型多智能体系统工具检索痛点

本文提出Tool-to-Agent Retrieval (T2A)方法,将工具和智能体纳入同一向量空间解决检索难题。通过构建二分图和统一编码器,实验显示该方法在LiveMCPBench数据集上最高提升28%召回率,轻量模型也有13%提升。研究表明工具细节补充了智能体语义缺失…

作者头像 李华
网站建设 2026/6/10 17:33:45

JAVA (Springboot) i18n国际化语言配置

JAVA i18n国际化语言配置 一、简介二、功能三、Java配置国际化步骤四、Java国际化配置工具类五、Spring Boot配置六、测试 一、简介 在Java中,国际化(Internationalization,通常简称为i18n)是一个过程,它允许应用程…

作者头像 李华
网站建设 2026/6/10 22:00:14

Java进阶13 线程池

Java进阶13 线程池 一、线程生命周期 线程被创建并启动以后,它并不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态,这各种状态就是线程的生命周期。 Java中的线程状态被定义在了java.lang.Thread.State…

作者头像 李华