路由
路由可以定义在工程的目录下(看你的需求),也可以定义在各个应用中来保存应用的路由,用主路文件urls中使用include()包含各个应用的子路由的数据
路由的解析顺序
Django接收到请求后,从主路由文件urlpatterns中的路由从上倒下顺序查找,如果有include包含,则进入子应用的urls中的urlpatterns中查找(从上而下)
路由的结尾斜线
Django有/结尾路由,用户不需要加/,就可以直接重定向到/结尾的路径上
路由命名(可以避免不同应用使用相同名字发生冲突)
如:
# 主路由 from django.conf.urls import url,include from django.contrib import admin import django_test.urls urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^users/',include(django_test.urls ,namespace='users')) ]
reverser反解析(子应用的路由都需要命名)
注意点:
- 对于未指明namespace的,reverse(路由name)
- 对于指明namespace的,reverse(命名空间namespace:路由name)
请求(POST,PUT,PATCH,DELETE)默认开启CSRF防护
post请求那些需要到postman测试工具里面测试
先把CSRF防护注释掉
向服务器传递参数的方式
URL:直接在URL中传递数据
查询字符串:key1=value1&key2=value2;
请求体:在body中传递数据,常见有表单,json,xml
请求头:在http报文头中
URL参数传递
未定义参数顺序传递
子应用的路由设置
urlpatterns = [ # 这边定义子应用的路由 url(r'^index/$',views.index,name='index'), url(r'^show/$',views.show,name='show'), url(r'^parameter/([a-z]+)/(\d{4})$',views.parameter,name='parameter'), ]
定义视图函数
# name,和age参数位置调换会影响下面的输出结果 def parameter(request,name, age): print('age=%s'%age) print('name=%s' % name) return HttpResponse('OK')
命名参数按照名字传递
子路由
urlpatterns = [ # 这边定义子应用的路由 url(r'^index/$',views.index,name='index'), url(r'^show/$',views.show,name='show'), url(r'^parameter/("htmlcode"># age 和name位置改变值不变 def parameter(request,age, name): print('age=%s'%age) print('name=%s' % name) return HttpResponse('OK')查询字符串(传递参数)
注意:查询字符串不区分请求方式,即假使客户端进行POST方式的请求,依然可以通过request.GET获取请求中的查询字符串数据。
子路由
url(r'^qust/$',views.qust),视图函数
def qust(request): a = request.GET.get('a') b = request.GET.get('b') alist = request.GET.getlist('a') print(a) # 3 print(b) # 2 print(alist) # ['1', '3'] return HttpResponse('OK')运行(后面在加)
请求体(传递参数)
表单类
路由设置
url(r'^get_form/$', views.get_form)视图函数
def get_form(request): name = request.POST.get('name') age = request.POST.get('age') alist = request.POST.getlist('name') print(name) print(age) print(alist) return HttpResponse('OK')运行
非表单类
路由
url(r'^get_body_json/$', views.get_body_json),视图
def get_body_json(request): json_str = request.body json_str = json_str.decode() # python3.6 无需执行此步 req_data = json.loads(json_str) print(req_data['a']) print(req_data['b']) return HttpResponse('OK')运行
请求头(传递参数)
可以通过request.META属性获取请求头headers的数据
路由
url(r'^get_head/$', views.get_head)视图函数
def get_head(request): print(request.META['CONTENT_TYPE']) return HttpResponse('OK')运行
常见的请求头
CONTENT_LENGTH
– The length of the request body (as a string).
CONTENT_TYPE
– The MIME type of the request body.
HTTP_ACCEPT
– Acceptable content types for the response.
HTTP_ACCEPT_ENCODING
– Acceptable encodings for the response.
HTTP_ACCEPT_LANGUAGE
– Acceptable languages for the response.
HTTP_HOST
– The HTTP Host header sent by the client.
HTTP_REFERER
– The referring page, if any.
HTTP_USER_AGENT
– The client's user-agent string.
QUERY_STRING
– The query string, as a single (unparsed) string.
REMOTE_ADDR
– The IP address of the client.
REMOTE_HOST
– The hostname of the client.
REMOTE_USER
– The user authenticated by the Web server, if any.
REQUEST_METHOD
– A string such as"GET"
or"POST"
.
SERVER_NAME
– The hostname of the server.
SERVER_PORT
– The port of the server (as a string).响应
- HttpResponse提供一系列子类
- HttpResponseRedirect 301
- HttpResponsePermanentRedirect 302
- HttpResponseNotModified 304
- HttpResponseBadRequest 400
- HttpResponseNotFound 404
- HttpResponseForbidden 403
- HttpResponseNotAllowed 405
- HttpResponseGone 410
- HttpResponseServerError 500
案例 # HttpResponse(content=响应体,content_type=响应数据类型,status=状态码)
# content:表示返回的内容 # status_code:返回的HTTP响应状态码 # content_type: 指定返回数据的MIME类型 from django_http import HttpResponse def index(request): return HttpResponse('欢迎来到Gaidy博客', status=202)JsonResponse(返回的json数据)
from django.http import JsonResponse def index(request): return JsonResponse({'name': 'gaidy', 'age': '25'})运行结果
redirect重定向
from django.shortcuts import redirect # django_test是路由的空间命名 def show(request): # 重定向 return redirect(reverse('django_test:index'))以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Django,路由请求响应
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]