">

笔记12:Django进阶

摘要:日常学习中对一些知识点进行总结得出该系列文章。学习笔记内容包括前端技术,Django web开发技术,数据库技术如MySQL,MongoDB,PGSQL等等。此外还有一些工具如Dock,ES等等。(本文原创,转载必须注明出处.)

1 登录页面

(1) djang-admin startproject test3

(2) python manage.py startapp booktest

(3) 创建templates目录和路径配置,后续完成对应app和login.html页面

1560353760280

ajax请求

1560355899544

1560355954571

views.py

1560355985255

(4) 注册app

(5) 配置数据库连接,并在init.py输入: import pymysql pymysql.install_as_MySQLdb()

(6) 配置static目录,后续完成对应app和css,js等

1
2
3
settings.py
# 设置静态文件的保存路径
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]

(7) 配置项目urls和app下的urls。这里主要使用path,path_re,include

1560354009013

(8) 编写views和相关方法

1560354218086

(9) python manage.py runserver 127.0.0.1:8080

(10) 编写models.py文件

(11) 生成迁移文件 python manage.py magrate

(12) 生成迁移表 python manage.py makemagration

2 小知识

(1)404错误原因是url没有配置或者配置错误

(2)500一般是服务器错误,view修改

(3)开发时候打开调试模式,开发完成后DEBUG = False

(4)页面传参

index.html

1
2
3
4
5
<ul>
{% for book in books %}
<li>{{ book.btitle }} --- <a href="delete{{ book.id }}">删除</a></li>
{% endfor %}
</ul>

urls.py

1
2
3
4
5
6
7
8
9
10
from django.urls import path,re_path

from booktest import views
urlpatterns = [
path('',views.index,name='index'),
path('create/',views.create,name='create'),
# path('delete<int:bid>/',views.delete,name='delete'),
re_path(r'^delete(\d+)$',views.delete,name='delete'),
# re_path(r'^delete(?P<bid>\d+)$',views.delete,name='delete'), # 组的关键字参数,与视图保持一致
]

views.py

1
2
3
4
def delete(request,bid):
book = BookInfo.objects.get(id=bid)
book.delete()
return redirect('/booktest')

(5)重定向

1
2
3
from django.shortcuts import render,redirect
return redirect('/booktest')
return render(request,'booktest/index.html')

(6) ajax 异步操作

1560354505704

test_ajax.html

1560355232058

1560355297179

views.py

1560355345896

(7)ajax同步异步

1560355541658

3 cookie与session

(1)cookie与session区别

理解cookie,你(浏览器)去火锅店吃饭,排队,老板(服务器)给每个人一个号(cookie)。拿着票号去吃火锅,老板验票(读取cookie)

1560955473083

1560955121151

理解session:你(浏览器)去理发店办卡,你的信息(session)保存在店(服务器)里面的电脑中,给你一个卡号(sessionid即cookie)。下次只需要报卡号就可以了

1560956973061

1560957037405

  • cookie无论如何保存,取出的都是str。session保存与读取字段类型一致

(2)cookie设置与读取

1560955684381

(3)使用cookie记住用户名

  • html

1560955813744

  • view

1560956051416

1560956180555

  • 修改html

1560956199880

(3)session设置与读取

  • 视图

1560957236838

  • urls

1560957264830

  • mysql

1560957326885

  • 设置过期时间

1560957589933

(4)使用session记住用户登录状态

  • views

1560957815711

1560957866153

(5)cookie和session应用场景

1560957960321

4 模板Templates

(1)pycharm自动配置,默认自动生成注册app,dir等

1560958272170

(2)修改数据库设置

1560958326648

1560958339578

(3)启动项目

1560958384132

(4)模板使用

  • views

1560958591758

1560958889854

  • urls.py :path与re_path

1560958623061

1560958667250

注意:render第三个参数是字典参数,通过html配置变量

(5)模板文件加载顺序

1560959222160

(6)模板语言

1560959425111

(7)模型变量

1560959672627

迁移数据和表,生成如下:(也可以直接指定表,不用做迁移,如下表)

1560959596321

  • views

1560959800840

  • urls

1560959816953

  • templates,html

1560959957419

1560959934005

(8)模板标签

1560960759347

1560960856612

注意:比较符两边需要空格

  • 日期格式

1560961097330

(9)自定义过滤器

1 项目下创建templatetags(必须这个名字)包,创建自定义过滤器文件,如filters.py

1560961441813


1560961741777

1560961811230

2 HTML使用

1560961495728

1560961552462

注意:过滤器默认封装号的,通过管道I直接使用,此外,还可以自定义过滤器,“|”前面的参数值默认传递,只需要输入过滤器方法名即可

(9) 模板注释

单行注释

1560961852840

多行注释

1560961877646

(10)模板继承

base:child1,child2.

1560962596941

  • base.html

1560962166726

  • child.html

1560962253237

1560962275041

  • 父模板中预留子模板位置,即预留块

1560962428034

1560962462514

1560962540023

(11) 模板html转义

1560962726038

1
2
3
4
5
6
关闭某个变量的转义
{{ content|safe }}
关闭所有变量的转义
{{ autoescape }}
{{content}}
{{ endautoescape }}

5 技术QQ群

机器学习和自然语言QQ群:436303759

机器学习和自然语言(QQ群号:436303759)是一个研究深度学习、机器学习、自然语言处理、数据挖掘、图像处理、目标检测、数据科学等AI相关领域的技术群。其宗旨是纯粹的AI技术圈子、绿色的交流环境。本群禁止有违背法律法规和道德的言谈举止。群成员备注格式:城市-自命名。微信订阅号:datathinks

白宁超 wechat
扫一扫关注微信公众号,机器学习和自然语言处理,订阅号datathinks!