📅  最后修改于: 2023-12-03 15:09:03.856000             🧑  作者: Mango
在Django中,视图之间传递数据是非常常见的一个需求。本文将介绍如何在Django中使用不同的方式来传递数据。
在url中使用GET请求来传递数据是一种常见的方式。
# urls.py文件
from django.urls import path
from . import views
urlpatterns = [
path('view1/', views.view1),
path('view2/', views.view2),
]
# views.py文件
from django.shortcuts import render
def view1(request):
return render(request, 'view1.html')
def view2(request):
data = request.GET.get('data')
return render(request, 'view2.html', {'data': data})
<!-- view1.html文件 -->
<a href="{% url 'view2' %}?data=hello">跳转到view2</a>
<!-- view2.html文件 -->
<p>接收到的数据:{{ data }}</p>
使用POST请求来传递数据也是一种常见的方式。
# urls.py文件
from django.urls import path
from . import views
urlpatterns = [
path('view1/', views.view1),
path('view2/', views.view2),
]
# views.py文件
from django.shortcuts import render
def view1(request):
return render(request, 'view1.html')
def view2(request):
if request.method == 'POST':
data = request.POST.get('data')
return render(request, 'view2.html', {'data': data})
return render(request, 'view2.html')
<!-- view1.html文件 -->
<form method="post" action="{% url 'view2' %}">
{% csrf_token %}
<input type="text" name="data">
<button type="submit">提交</button>
</form>
<!-- view2.html文件 -->
<p>接收到的数据:{{ data }}</p>
使用session来传递数据是另一种常见的方式。
# urls.py文件
from django.urls import path
from . import views
urlpatterns = [
path('view1/', views.view1),
path('view2/', views.view2),
]
# views.py文件
from django.shortcuts import render
def view1(request):
request.session['data'] = 'hello'
return render(request, 'view1.html')
def view2(request):
data = request.session.get('data')
return render(request, 'view2.html', {'data': data})
<!-- view1.html文件 -->
<a href="{% url 'view2' %}">跳转到view2</a>
<!-- view2.html文件 -->
<p>接收到的数据:{{ data }}</p>
使用cookie来传递数据也是一种常见的方式。
# urls.py文件
from django.urls import path
from . import views
urlpatterns = [
path('view1/', views.view1),
path('view2/', views.view2),
]
# views.py文件
from django.shortcuts import render
from django.http import HttpResponse
def view1(request):
response = HttpResponse('设置cookie')
response.set_cookie('data', 'hello')
return response
def view2(request):
data = request.COOKIES.get('data')
return render(request, 'view2.html', {'data': data})
<!-- view1.html文件 -->
<a href="{% url 'view2' %}">跳转到view2</a>
<!-- view2.html文件 -->
<p>接收到的数据:{{ data }}</p>
Django提供了多种方式来传递数据,根据需求可以选择使用不同的方式。对于简单的数据传递,使用url参数或者POST请求来传递数据即可;对于需要长期保存或者需要跨页面传递的数据,使用session或者cookie来传递数据更为合适。