赞
踩
Django中有一个封装好的HttpResponse类,通过该类可以方便给前端返回简单的数据
用法
response = HttpResponse(content=响应数据, content_type=响应体类型, status=状态码)
content_type默认是text/html,status默认是200
如果不想手动指定状态码,我们还可以使用HttpResponse的子类,已经封装好了各种响应状态的类
类名 | 状态码 |
---|---|
HttpResponse | 200 |
HttpResponsePermanentRedirect | 301 |
HttpResponseRedirect | 302 |
HttpResponseBadRequest | 400 |
HttpResponseForbidden | 403 |
HttpResponseNotFound | 404 |
HttpResponseNotAllowed | 405 |
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('HttpResponseView/', views.HttpResponseView.as_view())
]
views.py
from django.views import View
from django import http
class HttpResponseView(View):
def get(self, request):
# return http.HttpResponsePermanentRedirect() # 301
# return http.HttpResponseRedirect() # 302
# return http.HttpResponseBadRequest() # 400
# return http.HttpResponseForbidden() # 403
# return http.HttpResponseNotFound('找不到页面') # 404
# return http.HttpResponseNotAllowed() # 405
return http.HttpResponse('你好,这个是HttpResponseView返回的数据') # 200
urls.py
from django.urls import path
from . import views
urlpatterns = [
...
path('json_res/', views.ResponseJSON.as_view())
]
views.py
from django.views import View
from django import http
class ResponseJSON(View):
def get(self, request):
dic = {
'name': 'xiaohei',
'age': 18
}
return http.JsonResponse(dic)
如果用户在访问一个页面需要给他跳转另一个页面,我们可以使用重定向函数redirect()进行页面重定向
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('HttpResponseView/', views.HttpResponseView.as_view()),
path('json_res/', views.ResponseJSON.as_view()),
path('index/',views.IndexView.as_view())
]
views.py
from django.shortcuts import render, redirect from django.views import View from django import http class HttpResponseView(View): def get(self, request): return http.HttpResponse('你好,这个是HttpResponseView返回的数据') # 200 class ResponseJSON(View): def get(self, request): dic = { 'name': 'xiaohei', 'age': 18 } return http.JsonResponse(dic) class IndexView(View): def get(self, request): return redirect('/HttpResponseView/') # 页面重定向
当我们访问http://localhost:8000/index/的时候就会自动跳转到http://localhost:8000/HttpResponseView/这个页面
我们在path写路由地址的时候会确定用户应该请求哪个地址才能得到对应的数据,如果在开发过程中多次使用到该地址,但是以后需要修改该地址就会涉及很多地方全部都要修改,如果我们给该地址取一个名字,再由该名字获取地址那就简单多了。我们可以使用reverse()函数进行路由反向解析
urls.py(总路由)
from django.urls import path
from django.urls import include
urlpatterns = [
...
path('', include('request_response.urls')),
# 起别名,include()函数传入两个参数,一个元组(('子路由', '子应用名字')),另一个是命名空间(用于区分不同的子应用)
path('', include(('redirect.urls', 'redirect'), namespace='redirect'))
]
urls.py(子路由)
from django.urls import path
from . import views
urlpatterns = [
...
path('redirect/', views.ReturnToIndex.as_view()),
# path()函数,多加一个name属性
path('index/', views.IndexView.as_view(), name='index'),
]
views.py
from django.shortcuts import render, redirect from django.urls import reverse from django.views import View from django import http class HttpResponseView(View): def get(self, request): return http.HttpResponse('你好,这个是HttpResponseView返回的数据') # 200 ... class ReturnToIndex(View): def get(self, request): # 需要导入:from django.urls import reverse # reverse('namespace:name') real_url = reverse('redirect:index') # reverse需要导入,from django.shortcuts import redirect return redirect(real_url) class IndexView(View): def get(self, request): return http.HttpResponse('这里是首页')
因为我们已经指定了命名空间和别名,再通过它们进行反向解析,所以我们现在访问redirect/页面会正常跳转到index/页面,当我们修改子路由的index/这个路径的时候程序也能正常工作
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。