一)文件与文件夹
当我们设定好一个Djiango项目时,里面会有着view.py等文件,也就是文件的方式:
那么我们在后续增加app等时,view.py等文件会显得较为臃肿,当然也根据个人习惯,这时我们可以使用文件夹的方式:
原本我的views.py中有着这些函数:
现在我在web的app下命名一个views的文件夹并且在这个文件夹中创建同名的py文件:
那么使用方法其实并无特别大的改动,只是导入包是需要具体指定:
我们可以多个关联的方法(def)对应着一个py页面就好,这种文件夹的方法我个人觉得适合用于一个app有多个复杂功能有着较多url的场景,这样可以具体的指定方法,也方便我们检查方法代码是否有错误。
二)相对与绝对导入
这个问题其实追求本质就是相对路径与绝对路径。
相对路径:
绝对路径:
那么在这里我们需要注意一个点,不可以在项目的根目录做相对导入。
那么相对导入对比于绝对导入来说,层级会更深层次些。
原因:相对路径比绝对路径层级深是因为相对路径是以当前文件为起点,通过层级关系描述目标文件的位置。相对路径需要根据文件自身的位置进行计算,所以在描述路径时需要考虑更多的层级关系,导致了层级深度的增加。而绝对路径是以根目录为起点,不受文件位置的限制,所以在描述路径时相对简单,不需要考虑层级关系。
三)视图参数
我们在创建方法时,都会以request为默认参数,你是否真的知道request到底时个什么含义呢?
我们先来了解对象,对象我们可以理解成包裹,包裹它可以放很多东西。那么request就是一个对象,它存放了浏览器发送给我们的所有内容:
- 请求的相关所有的数据:当前访问的url,请求方式等…
- django额外添加的数据
我们可以做一个方法来具体获取分析
from django.shortcuts import HttpResponse
def requ(request):
# 1.当前URL /api/login/
print(request.path_info)
# 2.URL传递的参数
print(request.GET)
print(request.GET.get("age"))
# 3.请求方式 GET/POST
print(request.method)
# 4.如果post请求,传递请求体(原始数据)
print(
request.body) # b'{"code":"083Sjmll2yla694F3bll2DguCM2SjmlG","unionId":"oP6QCsyT_9bk1dfSaVf0GEV5Y-yE"}' b'v1=123&v2=456'
# 4.1 请求体+请求头 b'v1=123&v2=456' + content-type:application/x-www-form-urlencoded
print(request.POST)
print(request.POST.get("v1"))
pr