day_45_Django
day45
内容回顾
#### 1. HTTP协议
tcp/IP协议
HTTP特性:
无连接
请求--响应模式
请求格式

响应格式

Django相关
Django下载
命令行:
pip install django==1.11.20 # 指定版本号
pip install django==1.11.20 -i 豆瓣源
pycharm
打开file
settings
project
点击+号
input输入名称
不需要指定版本(直接install)
在右侧S开头选择对应版本,安装即可。
创建项目(第一次)
命令行模式
django-admin startproject 项目名称
pycharm
打开file
new project 选择django
在顶部选择项目路径以及,项目名称
选择解释器
app应用名称
create创建
创建app
命令行模式(manage.py 同级目录)
python manage.py startapp app名称
tools---> Run manage.py Task ----直接输入命令即可
启动项目
命令行模式
python manage.py runserver # 127.0.0.1:8000
python manage.py runserver 8888 # 127.0.0.1:8888
python manage.py runserver 192.168.1.2:8001 # 192.168.1.2:8001
pycharm
找到项目select
点击edit
host和port---->ok
绿色右三角按钮
static配置注意:

今日概要
路由层
视图层
模板层
今日详细
路由的简单使用
urlpatterns = [
path('admin/', admin.site.urls),
path('login/', views.login),
url(r'^articles/2003/$', views.article_2003),
url(r'^articles/[0-9]{4}/$', views.article_year),
]无名分组(按位置传参)
url(r'^articles/([0-9]{4})/$', views.article_year),有名分组(按关键字传参)
简单使用
url(r'^articles/(?P<year>[0-9]{4})/$', views.article_year),注意事项:
视图函数的形参,必须要跟有名分组的名称,同名,(顺序没有关系)
URL有几个分组,就必须要接收几个参数。
路由分发

简单使用
项目最顶级的URL配置
from django.conf.urls import url # 运用django1版本的URL
from django.urls import path, re_path, include
urlpatterns = [
url(r'^app01/', include("app01.urls")),
url(r'^app02/', include("app02.urls"))
]每个APP应用里面新建urls.py文件
from django.conf.urls import url
from app01 import views
urlpatterns = [
url(r'^login/$', views.login)
]注意事项:
项目顶级URL,结尾不要加$;
include参数字符串路径,必须要写正确。
URL、path、re_path区别:
URL
自己定制匹配规则
path
自动带开头和结尾匹配规则
include,自动去掉后面的$,进行URL拼接
re_path
等同于django1版本的URL。
视图层

request对象
属性
request.GET # 获取以GET请求方式,提交数据一个类似字典(QueryDict)
request.GET.get("key") # 推荐写法
request.GET.getlist("key") # 返回一个多值的列表
request.GET["key"] # 不推荐,会报错
request.POST # 获取以POST请求方式,提交数据一个类似字典(QueryDict)
request.POST.get("key") # 推荐写法
request.POST.getlist("key") # 返回一个多值的列表
request.POST["key"] # 不推荐,会报错
request.body # 请求体相关内容,原生的字节
request.path # 获取URL路径,没有IP和端口
request.method # 获取请求方式,大写
方法:
get_full_path() # 获取URL的完整路径。
is_ajax() # 返回布尔值,判断当前请求是否是ajax。
HTTPResponse对象
HttpResponse("想要显示的内容")
render(request, "模板名称", [ 可选参数])
redirect("要跳转的URL地址")

模板层
变量
语法:{{ name }}
过滤器
{{obj|filter__name:param}}
default
设置默认值,两个参数,
length
获取长度, 只需一个参数|前
filesizeformat
格式化文件尺寸,只需一个参数|前
date:"Y-m-d"
格式化是日期。一个参数
truncatechars
截取字符串,两个参数,后面截取长度。
safe

标签
for标签
遍历每一个元素,展示数据
if标签
判断,从而影响,页面展示效果
with标签
定义一个中间变量
csrf_token标签
用于跨站请求伪造保护

自定制过滤器和标签
在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.
在app中创建templatetags模块(模块名只能是templatetags)
创建任意 .py 文件
在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tags.py
如何使用
{% load my_tags %}
{% load my_tags %}
{{ li.0|filter_multi:li.1 }}
{% simple_tag_multi li.0 li.1 v3=li.2 %}
<p>{% my_input 3 "aaa" %}</p>注意:filter可以用在if等语句后,simple_tag不可以
今日作业
运用今天所学的知识点,完成书籍展示页面(运用bootstrap的表格展示)
数据见博客。
day_45_Django的更多相关文章
随机推荐
- Linux的DNS配置2-主从服务器
1.实验背景 之前写了Linux的DNS配置1-DNS入门,其中只用了一台DNS服务器,但一般在大型网络中,都要通过配置辅助DNS服务器可以提高DNS服务的可靠性,本次实验即配置DNS主从服务器 2. ...
- jdbc笔记(一) 使用Statement对单表的CRUD操作
jdbc连接mysql并执行简单的CRUD的步骤: 1.注册驱动(需要抛出/捕获异常) Class.forName("com.mysql.jdbc.Driver"); 2.建立连接 ...
- bzoj2839 集合计数(容斥)
2839: 集合计数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 883 Solved: 490[Submit][Status][Discuss] ...
- ASCII对应码表-键值(完整版)
ASCII对应码表-键值(完整版) Bin (二进制) Oct (八进制) Dec (十进制) Hex (十六进制) 缩写/字符 解释 0000 0000 00 0 0x00 NUL(null) 空字 ...
- Raphael.js--基础1
Raphael.js 特点: 1.兼容VML和SVG 2.扩展功能——动画 用法: //1.创建画布 let paper=Raphael(x,y,width,height); //2.创建形状 let ...
- 王之泰《面向对象程序设计(java)》课程学习总结
第一部分:理论知识学习部分 总复习纲要 1. Java语言特点与开发环境配置(第1章.第2章) 2. Java基本程序结构(第3章) 3. Java面向对象程序结构(第4章.第5章.第6章) 4. 类 ...
- fmt.Sprintf格式化使用
格式化写法: fmt.Sprintf(格式化样式, 参数列表-) 参数说明: 格式化样式:字符串形式,格式化动词以%开头. 参数列表:多个参数以逗号分隔,个数必须与格式化样式中的动词个数对应,否则运行 ...
- linux服务基础(一)之CentOS6编译安装httpd2.4
安装http-2.4 Http依赖于apr-1.4+,apr-util-1.4+ CentOS6上默认是apr-1.3,apr-util1.3 先编译安装apr-1.5,apr-util-1.5 开始 ...
- Clover 安装 Mac 系统更新 (原版黑苹果)
关于使用原版镜像(即 .dmg )安装黑苹果的升级,笔者写写自身经验吧. 在Clover启动的界面中与Mac OS有关的启动菜单有以下这些: Boot FileVault Prebooter from ...
- IOS高级开发之多线程(五)NSOperation 2
接着看NSOperation.NSOperationQueue线程间的通信: 应用场景:比如我们经常把一些耗时的操作比如下载图片放在子线程,那么当这个完成之后,我们就需要回到主线程,这个时候就需要用到 ...