目录
✅ 1. 函数视图(Function-Based View)示例
✅ 2. 类视图(Class-Based View)示例
✅ 3. 配置 URL 路由
✅ 4. 简单的 HTML 模板示例
✅ 5. 表单示例(forms.py)
? 小贴士
首页 后端开发 Python教程 python django视图示例

python django视图示例

Jul 30, 2025 am 12:32 AM
java 编程

Django视图处理请求并返回响应,1. 函数视图通过request参数判断方法类型,GET请求用render返回HTML页面,POST请求可处理表单并返回JsonResponse;2. 类视图继承View类,分别定义get和post方法处理不同请求,适合逻辑复杂的场景;3. URL路由通过path配置,函数视图直接引用,类视图需调用as_view()方法;4. 模板使用{{ }}渲染变量,表单需包含{% csrf_token %}防止跨站请求伪造;5. 表单类继承forms.Form定义字段,提交后验证数据并返回结果,推荐使用通用类视图如TemplateView或FormView减少重复代码。

python django views example

在 Django 中,视图(Views)是处理请求并返回响应的核心部分。下面是一个简单的 Django 视图示例,涵盖常见的用法:函数视图和类视图,以及如何处理 GET/POST 请求。

python django views example

✅ 1. 函数视图(Function-Based View)示例

# views.py
from django.http import HttpResponse, JsonResponse
from django.shortcuts import render, redirect
from .forms import MyForm  # 假设你有一个表单

def home_view(request):
    """处理首页请求"""
    if request.method == 'GET':
        return render(request, 'home.html', {'message': '欢迎来到首页!'})

def submit_form(request):
    """处理表单提交"""
    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            # 处理数据,比如保存到数据库
            return JsonResponse({'status': 'success', 'data': form.cleaned_data})
        else:
            return JsonResponse({'status': 'error', 'errors': form.errors}, status=400)
    return JsonResponse({'status': 'error', 'message': '仅支持POST请求'}, status=405)

✅ 2. 类视图(Class-Based View)示例

# views.py
from django.views import View
from django.http import JsonResponse

class MyApiView(View):
    def get(self, request):
        return JsonResponse({'method': 'GET', 'info': '这是GET请求'})

    def post(self, request):
        return JsonResponse({'method': 'POST', 'info': '收到了POST请求'})

✅ 3. 配置 URL 路由

# urls.py(应用级别的)
from django.urls import path
from . import views

urlpatterns = [
    path('', views.home_view, name='home'),
    path('submit/', views.submit_form, name='submit'),
    path('api/', views.MyApiView.as_view(), name='api'),
]

确保你的项目 urls.py 包含应用路由:

# project/urls.py
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('myapp.urls')),  # 替换 myapp 为你的应用名
]

✅ 4. 简单的 HTML 模板示例

<!-- templates/home.html -->
<!DOCTYPE html>
<html>
<head>
    <title>首页</title>
</head>
<body>
    <h1>{{ message }}</h1>
    <form action="{% url 'submit' %}" method="post">
        {% csrf_token %}
        <input type="text" name="name" placeholder="输入姓名" required>
        <button type="submit">提交</button>
    </form>
</body>
</html>

✅ 5. 表单示例(forms.py)

# forms.py
from django import forms

class MyForm(forms.Form):
    name = forms.CharField(max_length=100)
    email = forms.EmailField()

? 小贴士

  • 使用 render() 快速返回 HTML 模板。
  • JsonResponse 适合前后端分离项目返回 JSON。
  • 别忘了 {% csrf_token %} 在 POST 表单中。
  • 类视图更适合复杂逻辑,支持更多内置方法(如 get_context_data)。

基本上就这些。不复杂,但涵盖了 Django 视图最常用的场景。你可以根据需求扩展,比如使用 TemplateViewFormView 等通用类视图来减少重复代码。

python django views example

以上是python django视图示例的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Stock Market GPT

Stock Market GPT

人工智能驱动投资研究,做出更明智的决策

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何在Java中实现可比接口? 如何在Java中实现可比接口? Sep 16, 2025 am 03:44 AM

toimplementComparableInjava,DecoreTheComParetomEthodFornaturAlorArdorArdering.1.implementComparableFace.2.OverRideComParetotototoTotoretNnegative,零,orpositiveValuesbasedonComparison.3.usecollections.3.usort.sort()

如何在Java中实现接口? 如何在Java中实现接口? Sep 18, 2025 am 05:31 AM

使用implements关键字实现接口,类需提供接口中所有方法的具体实现,支持多接口时用逗号分隔,确保方法为public,Java8后默认和静态方法无需重写。

如何读取Java中的属性文件? 如何读取Java中的属性文件? Sep 16, 2025 am 05:01 AM

使用Properties类可轻松读取Java配置文件。1.将config.properties放入资源目录,通过getClassLoader().getResourceAsStream()加载并调用load()方法读取数据库配置。2.若文件在外部路径,使用FileInputStream加载。3.使用getProperty(key,defaultValue)处理缺失键并提供默认值,确保异常处理和输入验证。

如何在Java中创建文件 如何在Java中创建文件 Sep 21, 2025 am 03:54 AM

UseFile.createNewFile()tocreateafileonlyifitdoesn’texist,avoidingoverwriting;2.PreferFiles.createFile()fromNIO.2formodern,safefilecreationthatfailsifthefileexists;3.UseFileWriterorPrintWriterwhencreatingandimmediatelywritingcontent,withFileWriterover

如何在Java中写一个简单的lambda表情? 如何在Java中写一个简单的lambda表情? Sep 17, 2025 am 01:46 AM

Lambda表达式用于简化函数式接口的代码。例如,()->System.out.println("Hello")表示无参打印;Runnabletask=()->System.out.println("Running...")替代匿名类;(a,b)->a b实现BinaryOperator接口;常用于Comparator、Consumer等接口,如Collections.sort(names,(a,b)->a.compareTo(b)

如何从Java中的字符串中获取文件扩展名? 如何从Java中的字符串中获取文件扩展名? Sep 16, 2025 am 03:40 AM

togetafilextensionInjava,uselastIndexof()tofindthelastDotAndAndExtractthesubStringFerit,确保theDotiS notatIs notatIndex0orabsent; forcleanercode,useapachecommonsio’sfileNameutils.getExtension()

如何在Java中实现生产者问题? 如何在Java中实现生产者问题? Sep 16, 2025 am 05:06 AM

使用wait()和notify()实现生产者消费者问题:通过synchronized方法控制对共享缓冲区的访问,生产者在缓冲区满时等待,消费者在缓冲区空时等待,利用notify()唤醒对应线程。2.使用java.util.concurrent包中的BlockingQueue可更简便地实现线程安全的数据交换,避免手动管理锁和条件等待。

如何在Java中使用方法过载? 如何在Java中使用方法过载? Sep 16, 2025 am 02:53 AM

MethodOverLoadingAllowsMultipleMethoDswithThesAmenameButDifferentParameterSinaclass.1.itimprovescodereadability andReusability andReusabilityBysupportingVariedInputs.2.differencesmustbeinparameternumber,type,type type,type type type,ordore -ordore -ordore-noternurnurnurntypealone.3.3.explemple:calculata clatassplame:calculatarad clitatarad clitratoratortaratad

See all articles