华企号 软件工程 Django框架的使用教程

Django框架的使用教程

前言:本博客为技术小白的记录学习过程,有错误或不解的地方请指出 !!!
一.安装和创建项目
1.安装
1.1 命令行下载

pip3 install django==1.11.11  (可以跟镜像地址: -i +镜像地址 )

1.2 测试安装是否成功

django-admin

1.3注意事项:

计算机名称不能含中文
项目名称和py文件最好也不要使用中文
django的版本:目前django最新版本为4.X, 本次学习选择1.11.11版.

2.创建django项目
2.1 命令行模式
a.创建django项目

django-admin startproject + 项目名称

b.启动django项目

cd 项目名

python3 ​​manage.py​​ ​runserver

如果python是3.6以后的版本,可能会报错,这是需要修改py文件源码

python安装目录下的libsite-packagesdjangocontribadminwidgets.py去掉152行后面的逗号.

‘%s=%s’ % (k, v) for k, v in params.items(),

c.创建app

python ​ ​manage.py​​ startapp + app的名字

2.2 pycharm 模式
新建项目>>>选择Django >>>选择先前配置的解释器>>>填写app名>>>点击创建

 

2.3 注意事项
django项目创建完成后, 先验证项目是否可以正常启动, 如果报下面这个错误:

TypeError: unsupported operand type(s) for /: ‘str’ and ‘str’

需要修改配置文件

 

2.4 django目录结构说明
djangoProject文件夹  #项目同名文件夹

​ ​settings.py​​  # django暴露给用户可以配置的配置文件

​ ​urls.py​​  #路由与视图函数(可以是函数也可是类)对应关系

​ ​wsgi.py​​  #忽略

app01文件夹  #应用(可以有多个)

migrations文件夹  #存储数据库记录相关(类似于操作日志)

admin. py  # django后台管理

​ ​apps.py​​ # 注册app

db.sqlite3  # django自带的小型数据库

​ ​manage.py​​ # django入口文件

templates  #模板文件(存储html文件)

3.修改django默认端口
django默认的端口号是8000,在同一台机器同一时间如果需要运行多个django项目,需要修改端口号

python3 ​ ​manage.py​​ run server ip:port

pycharm自主修改

 

二.项目开发
1. 小白必会三板斧
1.1 HttpResponse
返回字符串

from django.shortcuts import render, HttpResponse, redirect
def func(request):
return HttpResponse(‘你好啊!’)
1.
2.
3.
1.2 rende
返回html页面, 还可以使用末班语法

from django.shortcuts import render, HttpResponse, redirect
def func(request):
lst = [{‘username’: ‘root’, ‘pwd’: ‘123456’}, {‘username’: ‘admin’, ‘pwd’: ‘123456’}]
return render(request, ‘userinfo.html’, {‘userinfo_list’: lst})
1.
2.
3.
4.
1.3 redirect
重定向

from django.shortcuts import render, HttpResponse, redirect
def func(request):
return redirect(‘http://www.baidu.com’)
1.
2.
3.
2. 静态页面配置
2.1 静态文件
写好之后不会自动动态改变的文件资源, 比如写好的css文件、js文件、图片文件、第三方框架文件。在django项目目录下创建static文件件,默认将所有的静态文件都放在static文件夹中。

2.2 配置
在settings.py文件中,设置静态文件的路径:

STATIC_URL = ‘/static/’ # 接口前缀
”’
想要访问静态文件资源,必须以static开头;
<script src=”/static/js/content.js”></script>
只要书写了接口前缀,就拥有访问STATICFILES_DIRS列表中
所有文件夹内部资料的权限
”’
# 静态文件配置
STATICFILES_DIRS = [
os.path.join(BASE_DIR, ‘static’),
os.path.join(BASE_DIR, ‘static1’),
os.path.join(BASE_DIR, ‘static2′),
]
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
3. request对象方法
request.method:获取当前请求的请求方法并且结果是一个纯大写的字符串;
”’
视图函数书写格式
def login(request):
if request.method == ‘POST’:
return HttpResponse(‘你是不是傻!’)
return render(request, ‘login.html’)
”’
1.
2.
3.
4.
5.
6.
7.
request.POST:获取用户提交post请求过来的基本数据(不含文件),直接看成是字典即可;
request.POST.get(): 获取列表最后一个元素;
request.POST.getlist(): 获取整个列表;
request.GET:获取url问号后面的数据,直接看成是字典即可;
request.GET.get(): 获取列表最后一个元素;
request.GET.getlist(): 获取整个列表;
request.FILES: 获取用户上传的文件数据
# form表单如果需要携带文件数据,需要添加参数
<form action=” method=’post’ enctype=’multipart/form-data’>
1.
request.FILES.get(): 获取列表最后一个元素;
request.FILES.getlist(): 获取整个列表;
4.django连接数据库
django默认使用自带的sqlite3,sqlite3不太好用,因此我们使用pymysql模块进行操作数据

4.1 配置文件修改配置

 

5.django orm模块的使用(非常重要)
5.1django orm简介
orm:orm中文名对象关系映射,映射关系入下:

类 ——-> 表
对象 ——-> 表里面的数据
对象.属性 ——-> 表里面字段对应的值
# 缺点:sql封装死了,有时候查询速度较慢
1.
2.
3.
4.
5.2 orm的使用
a . 模型类需要写在应用的models.py文件中

class User(models.Model):
# id int primary key auto_increment
id = models.AutoField(primary_key=True)
# name varchar(32)
name = models.CharField(max_length=32) # CharField必须要加max_length
# age int
age = models.IntegerField()
1.
2.
3.
4.
5.
6.
7.
b. 数据库迁移命令(必须记住)

python3 ​ ​manage.py​​​ makemigrations:将数据库修改操作记录到migrations文件夹
如果执行命令没反应,就执行python ​ ​manage.py​ makemigrations
python3 ​ ​manage.py​​ migrate: 真正的执行数据迁移操作
# ​ ​只要修改了models.py​​ 中跟数据库相关的代码就必须重新执行上述两条命令。
快捷方式:点击工具–>点击运行manage.py,然后只需要在终端中输入关键字makemigrations、migrate。

c. 针对主键字段

如果不指定主键,那么orm会自动创建名为id的主键字段;
如果想自定义主键名,则需要手动自定。
d.字段的增删改

增加字段:在User类中填写需要增加字段的代码即可,然后执行数据库迁移命令。
class User(models.Model):
# id int primary key auto_increment
id = models.AutoField(primary_key=True)
# name varchar(32)
name = models.CharField(max_length=32) # CharField必须要加max_length
# 增加字段age int
age = models.IntegerField(verbose_name=’密码’, null=Ture) # verbose_name起别名
# 增加字段时,需要设置默认值null=Ture或者default=1。
1.
2.
3.
4.
5.
6.
7.
8.
删除字段:注释掉对应字段的代码,然后执行数据库迁移命令。
修改字段:修改对应字段的代码,然后执行数据库迁移命令。
e.数据的增删改查

查询数据:在对应的模块导入models模块,然后通过filter方法进行查询
from app improt models
def func():
user.obj = models.User.objects.filter(name=’xxx’).frist()
# models.User.objects.filter(name=’xxx’)相当于select * from user where name=’xxx’
# models.User.objects.filter(name=’xxx’)的结果是[对象],可以通过索引和frist方法拿到列表中对象。
# 查询所有数据
models.User.objects.all() # [obj1,obj2,obj3,……]
相当于select * from user
1.
2.
3.
4.
5.
6.
7.
8.
添加数据
from app improt models
def func():
user.obj = models.User.objects.create(name=’xxx’,pwd=’abc’)
# models.User.objects.create(name=’xxx’,pwd=’abc’)相当于insert into user(name,pwd) values(‘xxx’,’abc’)
1.
2.
3.
4.
修改数据
from app improt models
def func():
# 第一种修改方式:
models.User.objects.filter(id=’xxx’)update(name=’yyy’,pwd=’123′)
# 第二种修改方式:
edit_dit = models.User.objects.filter(id=’xxx’).frist()
edit_dit.name = ‘yyy’
edit_dit.pwd = ‘123’
1.
2.
3.
4.
5.
6.
7.
8.
删除数据
登录后复制
models.User.objects.filter(id=’xxx’).delete()

作者: 华企网通李铁牛程序员

我是程序员李铁牛,热爱互联网软件开发和设计,专注于大数据、数据分析、数据库、php、java、python、scala、k8s、docker等知识总结。15889726201 我的座右铭:"业精于勤荒于嬉,行成于思毁于随"
上一篇
下一篇

发表回复

联系我们

联系我们

028-84868647

在线咨询: QQ交谈

邮箱: tech@68v8.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部