详细地址见:https://blog.csdn.net/DiligentGG/article/details/126606099?spm=1001.2014.3001.5501
1.步骤
2.代码存在缺陷
3.基于wsgiref模块
wsgiref模块解决了两个问题:socket代码重复编写造轮子和针对请求数据格式的处理复杂且重复。
动态页面的页面上数据是动态获取的,反之静态页面数据是写死的。
需求:
将字典数据传递到前端页面并且想要操作字典数据。
遇到问题:无法自己实现在html页面上使用类似于后端语法操作数据,即引出jinja2模块。
概念:
jinja2能够让我们在html文件内使用类似于后端的语法来操作各种数据类型。
基本语法:
控制结构 {% %}
for循环模板语法
{% for user in user_data %}{{ user.id }} {{ user.name }} {{ user.age }}
{% endfor %}
变量取值 {{ }}
普通模板语法
{{ data }}
{{ data['name'] }}
{{ data.get('pwd') }}
{{ data.hobby }}
注释 {# #}
1.MVC与MTV模型(老刘博文编写,了解一下)
2.django目录结构
3.django小白必会三板斧
三板斧 | 功能描述 | 备注 |
---|---|---|
HttpResponse | 主要用于直接返回字符串类型的数据 | return HttpResponse(‘你好’) |
render | 主要用于返回html页面,并且支持模板语法 | return render(request, ‘func.html’) |
redirect | 主要用于页面重定向 | return redirect(‘https://www.baidu.com’) |
4.静态文件及相关配置
将项目同名文件夹下settings.py文件下配置:STATIC_URL = '/static/' # 接口前缀
# 静态文件资源配置
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')
]
5.请求方法
URL:统一资源定位符(简称网址)
注意:form表单默认的数据提交方式是get;要修改为post时需要在form action字段中添加method字段。
6.request对象方法
request.POST.get() 默认只获取列表中最后一个数据值
request.POST.getlist() 获取键对应的整个列表 无论有几个数据值
request.GET.get() 默认只获取列表中最后一个数据值
request.GET.getlist() 获取键对应的整个列表 无论有几个数据值
def login(request):'''该函数将来会通过不同的请求方式触发,并且需要执行不同的业务逻辑代码'''# print(request.method)if request.method == 'GET':# 返回给前端一个登录页面return render(request,'login.html')elif request.method == 'POST':# 获取用户提交的数据# print(request.POST) # # res = request.POST.get('username') # jsaon print(request.POST) # res = request.POST.get('username') # oscar 默认只会拿最后一个数据res1 = request.POST.getlist('username') # 获取键对应的整个列表,无轮有几个数据值print(res,type(res))print(request.GET)return HttpResponse("收到了")
https://www.processon.com/diagrams
1.语法结构
path('网址后缀',函数名)
路由结尾的斜杠:
APPEND_SLASH = False
2.path转换器
当网址后缀不固定的时候,可以使用转换器来匹配;
转换器匹配到的内容会当做视图函数的关键字参数传入;
转换器有几个叫什么名字,那么视图函数的形参必须对应。
3.re_path正则匹配
re_path(正则表达式,函数名)
re_path('^text/$',views.test)
当网址不固定的时候可以使用转换器来匹配;
re_path('^text/(\d+)',view.text)
正则表达式匹配到的内容会当做视图函数的位置参数传递给视图函数。
re_path('^test/(?P\d+)/(?P.*?)/'views.test)
正则表达式匹配到的内容会当做视图函数的关键字参数传递给视图函数
4.反向解析
概念:页面上提前写死了很多路由,一旦路由发生变化会导致所有页面的连接失效;为了防止出现问题,我们需要使用反向解析。
原理:返回一个结果,该结果可以访问到对应的路由。
用法:
(1)路由对应关系起别名
path('register/',views.reg,name='reg_view')
(2)使用反向解析语法
在html页面中修改
{% url 'reg_view' %}
(3)后端
from django.shortcuts import reverse
reverse('reg_view')
5.无名有名反向解析
上一篇:网络工程师视角下的“1024”
下一篇:数据结构 - 广义表