目录
1.Django中的应用
1.什么是应用
应用就是网站中一个独立的模块程序
在Django中,主目录一般不处理用户的具体请求,主目录主要做的是项目的初始化以及请求的分发,
而具体的请求由各个应用去处理
2.创建应用
1.指令
./manage.py startapp 应用名称
ex:
./manage.py startapp news
2.在 settings.py中进行注册
在 INSTALLED_APPS中追加应用的名称
INSTALLED_APPS = [
'django.contrib.admin',
... ...
'自定义应用名称'
]
3.练习
1.创建新项目 - netease
2.创建 index 应用,并注册
3.创建 sport 应用,并注册
4.创建 music 应用,并注册
5.创建 news 应用,并注册
终端输入
tarena@tedu:~/Django/netease$ ./manage.py startapp music
... ... ./manage.py startapp index
... ... ./manage.py startapp news
... ... ./manage.py startapp sport
settings.py中
INSTALLED_APPS = [
'django.contrib.admin',
... ...
'index',
'sport',
'music',
'news',
3.应用的结构组成
1.migrations 目录
存放的是数据库的中间文件
2.__init__.py
应用的初始化文件
3.admin.py
应用的后台管理配置文件
4.apps.py
应用的属性配置文件
5.models.py
Models 与模型相关的配置文件
6.tests.py
测试模块
7.views.py
定义视图的文件
4.分布式路由系统
# 交给 music 应用去处理(转交给music的urls)
from django.conf.urls import include
# url(r'^music/',include('music.urls'))
http://localhost:8000/music/****
# 交给 music 应用中的 index_views 视图去处理
http://localhost:8000/music/index
# 交给 sport 应用去处理(转交给sport的urls)
http://localhost:8000/sport/****
练习:
1.访问路径 localhost:8000/news/index
转交给 news的urls再找到index_views处理
2.访问路径 localhost:8000/sport/index
转交给 sport的urls再找到index_views处理
3.访问路径 localhost:8000/index/index
转交给 index的urls再找到index_views处理
需求:
1.访问路径 http://localhost:8000/music/
交给 music 应用中的 index_views 视图去处理
url(r'^$',index_views)
2.访问路径 http://localhost:8000/music/show
交给 music 应用中的 show_views 视图去处理
http://localhost:8000/music/index
交给 music 应用中的 index_views 视图去处理
news 应用:
1. http://localhost:8000/news/
交给 news 应用中的 index_views 视图去处理
需求
1.http://localhost:8000/
交给 index 应用中的 index_views 视图去处理
2.http://localhost:8000/login
交给 index 应用中的 login_views 视图去处理
3.http://localhost:8000/register
交给 index 应用中的 register_views 视图去处理
只要访问路径不是 music , news , sport 的话,一律都交给 index 应用去处理
练习代码:https://blog.csdn.net/zh__quan/article/details/81987227
2.Django中的模板
1.什么是模板
模板就是要动态呈现给用户的网页内容
模板的本质就是网页 - 前后端结合的网页
2.模板的设置
在settings.py中,TEMPLATES 变量
1.BACKEND:指定模板的搜索引擎
2.DIRS:指定模板的存放目录们
如果DIRS中为空的话,那么Django会自动的到每个应用中搜索一个叫templates的目录作为模板存放目录
3.APP_DIRS
True:优先从DIRS指定的目录中查找模板,如果没找到的话,再搜索应用中的templates目录
3.模板的加载方式
1.使用loader获取模板,通过HttpResponse进行响应
from django.template import loader
def index_views(request):
#1.通过loader加载模板
t = loader.get_template("模板名称")
#2.将模板渲染成字符串
html = t.render()
#3.通过HttpResponse响应给客户端
return HttpResponse(html)
2.使用render直接加载并返回模板
def index_views(request):
return render(request,'模板名称')
4.模板的语法
1.变量
1.作用:允许将后端的数据传递给模板在模板中进行显示
2.Django中允许作为变量传递给模板的数据类型
字符串,数字,列表,元组,字典,函数,对象
3.变量的语法
变量们必须要封装到字典中才能传递给模板
1.使用loader加载模板
dic = {
'变量1':'值1',
'变量2':'值2',
... ...
}
t = loader.get_template("模板名称")
# 渲染成字符串时需要传递变量字典到模板中
return HttpResponse(t.render(dic))
2.使用render加载并返回模板
dic = {
'变量1':'值1',
'变量2':'值2',
... ...
}
return render(request,'模板名称',dic)
2.标签
1.作用
将服务器端的功能嵌入到模板中
2.语法
{% 标签内容 %}
3.标签详解
1.comment 标签
{% comment %}
{% endcomment %}
作用:在服务器端就被注释的内容,不会被渲染到客户端的
2.for 标签
作用:循环遍历 列表,字典,元组
语法:
{% for 变量 in 列表|字典|数组 %}
{% endfor %}
循环中允许使用 forloop 内置变量来获取循环相关的信息
forloop.counter:记录当前循环的次数(从1开始计算)
forloop.first:判断是否为第一次遍历
forloop.last:判断是否为最后一次遍历
3.if 标签
1.if
{% if 条件 %}
条件满足时要执行的内容
{% endif%}
2.if... else
{% if 条件 %}
满足条件时执行的内容
{% else %}
不满足条件时执行的内容
{% endif %}
3.if...elif...else
{% if 条件1 %}
满足条件1执行的内容
{% elif 条件2 %}
或满足条件2执行的内容
{% elif 条件3 %}
或满足条件3执行的内容
{% else %}
都不满足时执行的内容
{% endif %}