1.urls.py
1.url函数的语法
url(regex,views,kewarsg=None,name=None)
1.regex
正则表达式,匹配请求的url
2.views
视图处理函数或者其他的urls.py
3.kwarsg
字典,用来向views传参,没有参数则可以省略
4.name
字符串,给url()起别名,主要在模板中使用
ex:
urlpatterns = [
url(r"^run/$",run_)
]
2.通过url向view传参
1.使用正则表达式传参
使用子组传参,一个子组是一个参数,想要多个参数的话,
可以使用多个子组
urlpatterns = [
#访问路径是run/的时候,交给run_views处理
url(r"^run/$",run_views)
#访问路径是run/任意两位数字,交给run_args_views处理
url(r"^run/(\d{2})",run_args_v_args_views)
#访问路径是run/四位数字/两位数字/,run1_views处理
url(r"^run(\d{4})/(\d{2})/",run1_views)
]
注意:
1.在url()中,一个子组()表示一个参数
2.在views.py中,对应处理函数要根据url()中子组的个数,相应的定义函数,定义
的参数要位于request之后.
3.如果匹配上多个url,只执行最上面的url
ex:
1.
url(r"^run/(\d{2})",run_views)
def run_views(request,num)
2.url(r"run/(\d{2})/(\d{4})",run2_views)
def run_views(request,num1, num2)
2.使用url()第三个参数,字典传参
url(r"^show/$",show_views,{"name":"laoshe","age":"33"})
def show_views(request,name,age):
name:表示就是字典name参数的值
age: 表示的就是字典age参数的值
注意:
1.视图处理函数中,必须声明参数
2.参数的名称和位置,必须要和字典中的名称和位置保持一致
2.Django的应用
1.定义:
应用就是网站中的一个独立的程序模序模块
在Django中, 主目录一般处理用户的具体请求,主目录主要做项目的初始化和
2.创建应用
1.命令
./manage,py startapp 应用名称
ex:
python3 manage.py startapp news
python3
2.在settings.py中进行注册
在 INSTALLED_APPS中进行注册
INSTALLED_APPS = [
"news"
]
3.应用结构组成
1.migrations 目录
存放数据库中间(日志文件)
2.__init__.py
应用初始化文件
3.admin.py
应用的后台管理配置文件
4. apps.py
应用属性配置文件
5.models.py
模型文件,与数据库有关
6.tests.py
测试模块
7. views.py
视图文件
练习:
创建index应用, 并注册
创建sport应用, 并注册
创建music应用, 并注册
练习2.当访问http://localhost:8000
则交给index应用中 index_views视图处理
当http://localhost:8000/login
则交给index应用中,login_views视图处理
3.Django模板(templates)
1.模板
定义:就是动态的给用户呈现的网页内容
其实就是一个网页
前后端的网页
2.模板的设置
在setting中有一个TEMPLATES 变量
TEMPLATTES = [
{"BACKEND":"",
"DIRS":[..... .. . ],
}
]
1.BACKEND: 指定模板的搜索引擎,不用动
2.DIRS : 指定模板所存放目录们
DIRS = ["index.temp","music.temp"]
但是DIRS中为空的话,那么Django会自动到每个应用中去搜索一个叫templates的目录来
作为模板的管理目录.
推荐:
1.DIRS内容保持为空
2.在每个应用中,都创建了一个templates目录
3.APP_dirs
True:首先从DIRS中指定的目录中查找模板,如果没有找到的话,在搜索templates目录
3.模板的加载方式
1.使用loader获取模板,并通过HttpResponse进行响应
1. from django.template import loader
2.通过loader加载模板
1. t = loader.get_template("模板名称")
2. 通过t对象, 将模板渲染成字符串
html = t.render()
3. 通过HttpResponse 将 html相应给客户端
return HttpResponse(html)
2.使用render直接加模板并返回
from django.shortcuts import render
return render(request,"模板名称")
4.模板的语法
1,变量
1.作用:
将后端的数据传递给模板,在模板中,会根据变量的值进行显示
2.在Django中允许传递给模板做变量的数据类型,数字,字符串, 列表, 元组,字典,函数,
对象
3.变量的语法
1.如果使用loader的话
dic = {
"变量名1":"值1",
"变量名2":"值2",
"变量名3":"值3",
}
t = loader.get_template("xxx.html")
html = t.render(dict)
return HttpResponse(html)
在模板中显示变量:{{变量名}}
2.使用render
dic = {
"变量1":"值1"
}
render(request,"html",dic)
练习:
当访问http://localhost:8000/news/05-exer
在模板中显示以下内容:
书名:<背影>
作者:朱自清
出版社:北京大学出版社
出版时间:1995-10-12
2.标签
1.什么是标签
允许将服务器端的一些功能嵌入到模板中
2,语法:
{%标签内容%}
1.for
{%for 变量 in 列表|元组|字典%}
{% endfor %}
允许使用for提供的内置变量-forloop
1.forloop.counter
记录当前循环的次数,从1开始
2.forloop.first
是否是第一次循环(第一项)
3.forloop.last
是否是最后一次循环(最后一项)
2.if
1.
{$if 条件 %}
满足条件运行的内容
{$ endif %}
条件中允许使用比较运算符(>,<,<=,>=,!,==),逻辑运算符(and,or,not)
注意:and 和 or 不能同时出现
3. {% if 条件 %}
满足条件运行的内容
{% else %}
不满足条件运行的内容
{% endif %}
3. {% if 条件1 % }
满足条件1运行的内容
{% elif 条件2 %}
满足条件2运行的内容
{% elif 条件3 %}
满足条件3运行的内容
{ % else %}
不满足以上条件运行的内容
3.过滤器
1.作用
过滤数据
在显示变量的数据之前,允许对数据进行筛选或者改变
2.语法规范
{{变量|过滤器:参数|}}
3.简单的过滤器
1.{{value|upper}}
将value变为大写字符
2.{{value|lower}}
3.{{value|add:num}}
将num累加到value之后
4.{{value|floatformat:n}}
将value四舍五入到n位小数
5. {{value|truncatechars:n}}
将字符串截取到n位(包含....)
作业:1.创建项目-fruitday
2.创建应用-index
3.配置路由配置模块
4.将login.html移植到fruitday中,以模板的形式呈现给用户