初识Django
1. 安装Django
pip install django
c:\python39
- python.exe
- Scripts
- pip.exe
- django-admin.exe [工具,创建django项目中的默认文件和文件夹]
- Lib
- 内置模块
- site-packages
- flask
- pymql
- django [框架的源码]
2. 创建项目
django项目中会有一些默认的文件和文件夹
(本人用的专业版pycharm,直接就能创建)
默认项目的文件介绍:
mysite
|-- manage.py 【项目的管理,启动项目,创建app,数据管理】【***常常用***】
|-- mysite
|
|-- __init__.py
|-- urls.py 【url和函数的对应关系】【***常常修改***】
|-- settings.py 【项目配置】【***常常修改***】
|-- asgi.py 【接收网络请求】【不要动】
|-- wsgi.py 【接收网络请求】【不要动】
3. APP
- 项目
- app,用户管理 【表结构,函数,HTML,CSS】
- app,后台管理 【表结构,函数,HTML,CSS】
- app,网站 【表结构,函数,HTML,CSS】
- app,API 【表结构,函数,HTML,CSS】
··
注意:我们开发比较简洁,用不到多app
python manege.py startapp app01
├─app01
│ │ admin.py 【固定,不动】django默认提供了admin后台管理
│ │ apps.py 【固定,不动】app启动类
│ │ models.py 【**重要**】,对数据库操作
│ │ tests.py 【固定,不动】单元测试
│ │ views.py 【**重要**】,函数
│ │ __init__.py
│ │
│ └─migrations 【固定,不动】数据库变更记录
│ __init__.py
4. 快速上手
确保app已注册
在settings中INSTALLED_APPS中加一行:'app01.apps.App01Config',
编写URL和视图函数的对应关系【urls.py】
编写视图函数【views.py】
- 启动Django项目- 命令行启动
python manage.py runserver
- pycharm启动
4.1 templates模板
# 去app目录下的templates目录寻找html文件(根据app注册顺序,逐一去他们的templates目录中寻找)
# 加上这个之后 'DIRS': [os.path.join(BASE_DIR, 'templates')],
# 优先去项目的根目录的templates中寻找
4.2 静态文件
在开发过程中一般将:
图片, CSS, JS 都会当作静态文件处理。
Django中推荐下面这样引入静态文件,这样如果改了路径,只需要修改配置文件就行
{% load static %}
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><linkrel="stylesheet"href="{% static 'plugins/bootstrap-3.4.1-dist/css/bootstrap.css' %}"></head><body><h1>添加用户</h1><imgsrc="{% static 'img/1.jpg' %}"alt=""/><scriptsrc="{% static 'js/jquery-3.7.1.min.js' %}"></script><scriptsrc="{% static 'plugins/bootstrap-3.4.1-dist/js/bootstrap.js' %}"></script></body></html>
5. 模板语法
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><h1>模板语法学习</h1><div>{{ n1 }}</div><div>{{ n2 }}</div><div>{{ n2.0 }}</div><div>{{ n2.1 }}</div><div>{{ n2.2 }}</div><div>
{% for item in n2 %}
<span>{{ item }}</span>
{% endfor %}
</div><div>{{ n3.name }}</div><hr/><div>
{% if n1 == '高宇轩' %}
<h1>哈哈哈啊哈</h1>
{% elif n1 == '大帅比' %}
<h1>啦啦啦啦啦</h1>
{% else %}
<h1>嘿嘿嘿嘿嘿</h1>
{% endif %}
</div></body></html>
6. 请求和响应
defsomething(request):# request 是一个对象,封装了用户发送过来的所有请求相关数据# 1. 获取请求方式 GET/POSTprint(request.method)# 2. 在URL上传递一些值 http://localhost:8000/smt/?n1=123&n2=456print(request.GET)# 3. 在请求体中提交数据print(request.POST)# 4. HttpResponse("返回内容"),内容字符串返回给浏览器# return HttpResponse("返回内容")# 5. 读取HTML内容+渲染(替换)# return render(request, "something.html", {"title": "来了"})# 6. 让浏览器重定向到其他的页面return redirect('')
7. 数据库操作
Django开发操作数据库更简单,内部提供了ORM框架
ORM是一个翻译的过程
7.1 安装第三方模块
pip install mysqlclient
7.2 ORM
ORM可以帮我们做两件事:
- 创建、修改、删除数据库中的表(不用写SQL语句)。【无法创建数据库】
- 操作表中数据【也不用写SQL语句】
1. 自己创建数据库
2. django连接数据库
在settings.py文件中进行配置和修改
DATABASES ={"default":{"ENGINE":"django.db.backends.mysql","NAME":"django",# 数据库名字"USER":"root","PASSWORD":"123","HOST":"127.0.0.1",# 哪台机器安装了mysql"PORT":3306,}}
3. django操作表
创建表:在models.py中:
相当于
create table app01_userinfo(
id integer primary key autoincrement, # 自动生成
name varchar(32),
password varchar(64),
age int
)
执行命令:
注意:app需要提前注册
python manage.py makemigrations
python manage.py migrate
在这个过程中,本人碰到了这个报错
django.db.utils.NotSupportedError: MySQL 8.0.11 or later is required (found 5.7.31).
应该会有不少人和我一样
我们只需要找到django安装路径
D:\Code\Python\PythonLearning\Django_Learn\djangoProject_1\.venv\Lib\site-packages\django\db\backends\base
找到base.py
再找到这一行注释掉就可以了
- 插入
deform(request):# 测试orm操作表中的数据# models.DepartmentInfo.objects.create(title="销售部")# models.DepartmentInfo.objects.create(title="IT部")# models.DepartmentInfo.objects.create(title="运营部") UserInfo.objects.create(name="高宇轩", password="123", age=19)return HttpResponse("成功")
- 删除
# 删除 DepartmentInfo.objects.filter(id=1).delete()# filte时筛选条件 DepartmentInfo.objects.all().delete()# all时全部删除
- 获取数据
#data_list = [对象, 行, 行] QuerySet类型 data_list = DepartmentInfo.objects.all()for obj in data_list:print(obj.id, obj.name) data_list = UserInfo.objects.filter(id=1)
- 更新数据
UserInfo.objects.all().update(password='999')
UserInfo.objects.filter(name="高宇轩").update(password='999')
8. 案例:用户管理
1. 展示用户列表
- 获取所有用户信息- HTML渲染
definfo_list(request):# 1. 获取数据库中所有的用户信息# [对象, 对象, 对象]
haha_list = UserInfo.objects.all()print(haha_list)return render(request,"info_list.html",{"haha_list": haha_list})
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>用户列表</title></head><body><ahref="/info/add/">添加</a><h1>用户列表</h1><tableborder="1"><thead><tr><th>ID</th><th>姓名</th><th>密码</th><th>年龄</th><th>操作</th></tr></thead><tbody>
{% for obj in haha_list %}
<tr><td>{{ obj.id }}</td><td>{{ obj.name }}</td><td>{{ obj.password }}</td><td>{{ obj.age }}</td><td><ahref="/info/delete/?nid={{ obj.id }}">删除</a></td></tr>
{% endfor %}
</tbody></table></body></html>
2. 添加用户
- URL
- 函数 - GET,看到页面,输入内容。- POST,提交 -> 写入到数据库。
definfo_add(request):if request.method =="GET":return render(request,"info_add.html")# 获取用户提交的数据
user = request.POST.get("user")
pwd = request.POST.get("pwd")
age = request.POST.get("age")# 添加到数据库
UserInfo.objects.create(name=user, password=pwd, age=age)return redirect("/info/list/")
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>添加用户</title></head><body><h1>添加用户</h1><formmethod="post"action="/info/add/">
{% csrf_token %} <--!>一定要加上这个</--!><inputtype="text"name="user",placeholder="用户名"><inputtype="text"name="pwd",placeholder="密码"><inputtype="text"name="age",placeholder="年龄"><inputtype="submit"value="提交"></form></body></html>
3. 删除用户
definfo_delete(request):
nid = request.GET.get("nid")
UserInfo.objects.filter(id=nid).delete()return redirect("/info/list/")
这里配合前面的用户列表,可以实现按钮删除
注意:表单提交要加上 {% csrf_token %}
版权归原作者 青帝_ 所有, 如有侵权,请联系我们删除。