django开发1
django开发
1. 安装django
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django
anaconda\envs\...
- python.exe
- Scripts
- pip.exe
- django-admin.exe [工具,创建django项目中的文件和文件夹]
- Lib
- 内置模块
- site-packages
- openpyxl
- django [框架的源码]
2. 创建项目
2.1 在终端
-
打开终端
-
进入某个目录(项目放在哪里)
-
执行命令创建项目
"D:\Anaconda\envs\python37_32\Scripts\django-admin.exe" startproject 项目名称
如果D:\Anaconda\envs\python37_32\Scripts已经加入环境变量 django-admin.exe startproject 项目名称
2.2 pycharm创建
必须是企业版才可以创建
2.3 默认项目文件介绍
mysite
│ manage.py [项目管理,数据库管理,启动项目,创建app][不要动][***常常用***]
│
└─mysite
settings.py [项目配置,连接数据库之类][***常常修改***]
urls.py [URL和python函数的对应关系][***常常修改***]
wsgi.py [接收网络请求][不要动]
__init__.py
3. App
项目
- app,用户管理[表结构、函数、Html模板、css...]
- app,订单管理[表结构、函数、Html模板、css...]
- app,后台管理[表结构、函数、Html模板、css...]
- ...
注意:我们开发比较简洁,单app就可。
python manage.py startapp app01 [创建app]
─app01
│ │ admin.py [固定,不用动] django默认提供了后台管理
│ │ apps.py [固定,不用动] app启动类
│ │ models.py [**重要**] 对数据库进行操作
│ │ tests.py [固定,不用动] 单元测试
│ │ views.py [**重要**] 函数
│ │ __init__.py
│ │
│ └─migrations [固定,不用动] 数据库字段变更
│ __init__.py
│
4. 快速上手
- 确保app已经注册 [settings.py]
- 编写URL和视图函数的对应关系 [urls.py]
- 编写视图函数 [views.py]
-
启动django项目
-
命令行启动
启动:python manage.py runserver 终止:ctrl+c
-
pycharm启动
需要企业版
-
4.1 再写一个页面
- url-->函数(views)
4.2 templates模板
4.3 静态文件
在开发过程中,一般将
- 图片
- css
- js
- ...
都会当作静态文件处理
4.3.1 创建static目录
4.3.2 引用静态文件
5. 模板语法
本质上,在html中写一些占位符,由数据对这些占位符进行替换和处理
<h1>模板语法的学习</h1>
<h2>str</h2>
<div>{{n1}}</div>
<hr/>
________________________________________
<h2>list</h2>
<div>{{n2}} </div>
<div>{{n2.0}} </div>
<div>
{% for item in n2 %}
<spa>{{item}}</spa>
{% endfor %}
</div>
<hr/>
________________________________________
<h2>dict</h2>
<div>{{n3.name}}</div>
<ul>
{% for k,v in n3.items %}
<li>{{k}}={{v}}</li>
{% endfor %}
</ul>
<ul>
{% for key in n3.keys %}
<li>{{key}}</li>
{% endfor %}
</ul>
________________________________________
<ul>
{% for value in n3.values %}
<li>{{value}}</li>
{% endfor %}
</ul>
<hr/>
________________________________________
<h2>条件语句</h2>
{% if n3.name == '刘彦开' %}
<div>yes yes yes yes</div>
{% else %}
<div>no no no no </div>
{% endif %}
6. 请求和响应
- 三种响应方式
7. 数据库操作
7.1 安装第三方模块mysqlclient
- windows根据环境搜索相应的mysqlclient包 网址
- C:\Users\41055\Downloads>pip install mysqlclient-1.4.6-cp36-cp36m-win32.whl
7.2 ORM
ORM可以帮助我们做两件事:
- 创建修改删除数据库中的表。(不用写sql语句)[无法创建数据库]
- 操作表中的数据。(不用写sql语句)
7.2.1 创建数据库
用sqlyog创建
7.2.2 django连接数据库
在settings.py文件中进行配置和修改
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 用mysql就写mysql
'NAME': 'site_test', # 写数据库的名字
'USER': 'root', # 用户名
'PASSWORD': '', # 密码
'HOST': '127.0.0.1', # mysql服务器
'PORT': 3306,
}
}
7.2.3 django 操作表(创建修改删除)
在models.py文件中进行修改
- 创建表
from django.db import models
# Create your models here.
class UserInfo(models.Model):
name=models.CharField(max_length=32)
password=models.CharField(max_length=64)
age=models.IntegerField()
等同于
"""
create table app01_userinfo(
id bigint auto_increment primary key,
name varchar(32),
password varchar(64),
age int
)
"""
执行命令:
python manage.py makemigrations
python manage.py migrate
注意:app需要提前注册
- 在表中新增数据时,由于已存在列中可能已有数据,所以新增列必须指定新增列对应的数据:
-
- 手动输入一个值
-
- 设置默认值
data1=models.IntegerField(default=3)
-
- 允许为空
data2=models.IntegerField(null=True,blank=True)
-
7.2.4 django操作表中的数据
########## 1.新增 ########################
Department.objects.create(title='销售部')
Department.objects.create(title='it部')
Department.objects.create(title='人力部')
########## 2.删除 ########################
Department.objects.filter(id=3).delete()
Department.objects.all().delete()
########## 3.获取 ########################
data_list=UserInfo.objects.all()
# data_list 是一个QuerySet类型,data_list=[对象,对象,对象],每个对象是一行
for obj in data_list:
print(obj.id,obj.name,obj.password,obj.age)
# 获取第一条数据
obj=UserInfo.objects.filter(id=3).frist()
print(obj.id,obj.name,obj.password,obj.age)
########### 4.更新 ########################
UserInfo.objects.all().update(password='999')
UserInfo.objects.filter(id=3).update(age=1277)
案例:用户管理(orm数据库的应用)
1. 展示用户列表
- url
- 函数
- 获取所有用户信息
- HTML渲染
2. 添加用户
- url
- views函数
- GET,看到页面,输入内容
- POST,提交--->写入数据库
3. 删除用户
- url
- 函数
http://127.0.0.1:8000/user/delete?nid=1
http://127.0.0.1:8000/user/delete?nid=2
http://127.0.0.1:8000/user/delete?nid=3
def 函数(request):
request.GET.get("nid")
UserInfo.objects.filter(id=nid).delete()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)