1.安装Django
pip install django
2.创建项目
django中项目会有一些默认的文件和默认的文件夹。
2.1 在终端
- 打开终端
- 进入某个目录(项目放在哪里)
E:\repo\MMF\Python\djangodemo
- 执行命令创建项目
"E:\soft\Python\Python37\Scripts\django-admin.exe" startproject 项目名称
# 如果 Python 已经增加到环境变量中可以直接执行
django-admin startproject 项目名称
2.2 Pycharm创建
略
2.3 两种创建方式的对比
- 使用命令行创建的项目是最标准的【推荐】
- Pycharm,在标准的基础上默认给咱们增加了一点东西:
- 创建了一个Templates目录【删除】
- settings.py中
2.4 默认项目的文件介绍
mysite
├─manage.py 【项目的管理,启动项目、创建App、数据管理】---不要动
└─mysite
├─__init__.py
├─settings.py 【项目配置】
├─urls.py 【URL和函数的对应关系】---常常操作
├─asgi.py 【异步运行项目,编写socket,处理网络请求】--- 不要动
├─wsgi.py 【同步运行项目,编写socket,处理网络请求】--- 不要动
3.APP
3.1 创建App
python manage.py startapp App名称
3.2默认App的文件介绍
├─app01
├─__init__.py
├─admin.py 【固定,不用动】 Django默认提供了admin后台管理
├─apps.py 【固定,不用动】app启动类
├─migrations 【固定,不用动】数据库变更记录
├─__init__.py
├─models.py 【**重要**】 对数据库操作
├─tests.py 【固定,不用动】单元测试
├─views.py 【**重要**】 视图函数
├─manage.py
└─mysite
├─__init__.py
├─settings.py
├─urls.py
├─asgi.py
├─wsgi.py
4.快速上手
4.1在settings.py中注册App【settings.py】
4.2编写URL和视图函数的对应关系【urls.py】
4.3编写视图函数【views.py】
4.4启动Django项目
- 命令行启动
python manage.py runserver 0.0.0.0:8080
- Pycharm启动
4.5测试
5.Template模板文件
- 创建模板
要在App下新建一个templates目录
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 默认先从根目录的templates中寻找,如果找不到则到各自App中寻找
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
- 调用模板
def user_list(request):
# 1. 优先去项目根目录的templates中寻找【前提是在settings中配置模板路径,不配置则无效】
# 2. 去App目录下的templates目录寻找 user_list.html(寻找顺序:根据app的注册循序寻找)
return render(request=request, template_name='user_list.html')
6.Static静态文件
- 创建资源文件
注意:静态文件一定要放在static文件夹下面,否则会检索不到,因为在settings.py中定义的静态文件路径
- 引用资源文件
7.模板语法
本质上:在HTML中写一些占位符,由数据对这些占位符进行替换和处理
def tpl(request):
name = '韩超'
roles = ['管理员', 'CEO', '保安']
user_info = {'name': '郭荣', 'salary': 10000, 'role': 'CEO'}
data_list = [
{'name': '郭志', 'salary': 10000, 'role': 'CTO'},
{'name': '张三', 'salary': 10000, 'role': 'CTO'},
{'name': '李四', 'salary': 10000, 'role': 'CTO'},
]
return render(request=request, template_name='tpl.html',
context={'name': name, 'roles': roles, 'userInfo': user_info, 'dataList': data_list})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>模板语法学习</title>
</head>
<body>
<h1>模板语法的学习</h1>
{# 赋值 #}
<div>{{ name }}</div>
{# 循环展示 #}
<div>
{% for item in roles %}
<span>{{ item }}</span>
{% endfor %}
</div>
{# 字典获取展示 #}
<ul>
{% for k,v in userInfo.items %}
<li>{{ k }} = {{ v }}</li>
{% endfor %}
</ul>
{# 列表字典展示 #}
{% for data in dataList %}
<div>
{{ data.name }} {{ data.salary }} {{ data.role }}
</div>
{% endfor %}
{# 条件判断 #}
{% if name == '韩超'%}
<div>哒哒哒哒哒哒</div>
{% elif name == 'xxx'%}
<div>啊啊啊啊啊啊</div>
{% else %}
<div>嘟嘟嘟嘟嘟嘟</div>
{% endif %}
</body>
</html>
8.请求和响应
方法 | 解释 | |
---|---|---|
请求 | ||
request.method | 获取请求方式GET/POST | |
request.GET | 获取URL携带过来的参数 | |
request.POST | 获取POST请求的参数 | |
响应 | ||
HttpResponse() | 返回字符串 | 如果返回的内容不是字典需要设置safe=False |
render(request=request, template_name=template_name, context=context) | 返回HTML页面 | request:请求; template_name:HTML页面; context:向页面传递的参数 |
redirect(to=to) | 重定向 | to:重定向到什么地方,可以是网址,也可以是方法 |