Django:
注意事项:
1.计算机名称不能含有中文
2.一个Pycharm窗口就是一个工程(项目)
3.项目文件夹不要有中文
PS:Django版本问题:
django 1.X 建议使用这个版本 用的最多的是django1.11
django 2.X
安装:
pip3 install django == 1.11.11
命令行
创建django项目
django-admin startproject 项目名称
例如:
django-admin startproject mysite
PS:创建一个应用名的文件夹,里面有一个跟应用名同名的文件夹和一个manage.py的文件
创建应用;
django-admin startapp 应用名;
django-admin startapp app01;
启动应用:
python3 manage.py runserver
也可以
python3 manage.py runserver +ip port 只不过暂时这个IP与端口不需要加
ps:命令行新疆django项目不会自动新建Template文件夹
并且setting配置文件中不会自动写template的路径,
注意:
1.在django中创建的应用必须要到setting中去配置注册,否则不识别
在那个setting 中的INTSALLED_APPS的列表中加入我们新创建的APP名称
支持简写;appo1 ##直接写app的名字
最完整的写法是:app01.app.App01Config
2.确保不要端口冲突,
3.django是web开发引用,有时候代码修改了加载不出来,可能是因为浏览器的缓存问题
以谷歌浏览器为例,可以这样设置一下,首先打开浏览器,右键,检查,然后点击弹出窗口
右上角的三个点,然后点击setting ,在弹出的network类中,将Disable cache(while DevTools is open)勾选上
拓展:
application 应用的概念:
一个django项目,可以有多个应用(可以拆开来,分别给不同的人去开发.开发好了之后整合起来就可了)
django是一款开发应用的框架,开发好之后整合起来需要统一配置一下,将所有的APP应用全部在setting文件中注册配置
django项目就类似于一所大学
而里面的应用就类似于一个个学院
项目名:
应用名文件夹:
migrations 文件夹
数据库迁移记录
admin.py
django admin 后台管理相关
models.py
模型类 一个一个的类
views.py
视图函数
项目同名文件夹
settings.py
django暴露给用户可配置的配置文件
urls.py
路由与视图函数映射关系
templates
所有的html文件
manage.py
django入口文件 (暂时我们用不到这个)
总结今天的工作:将Django跑起来了.
fiel ===>> new project ===>> django==>>
然后给项目命名
点来下面的project interpreter:Python 3.6
选择Existing interpreter 然后选择解释器的位置
More setting 里面的Application name
可以在这个项目里面创建一个应用,填一个应用的名字
然后点击create
然后就创建好了一个项目,而且这个项目里面已经有一个应用
然后就可以开始开发了.
django小白必会三板斧
HttpResponse:返回字符串
咋视图函数 views中定义的函数里面,
return HttpResponse('这里写什么,浏览器就 会展示什么')
这个是返回字符串,当然,也可以将html文件读出来,然后将读出来的信息给它让他返回
render:返回html页面
return render(request,"login.html")
注意,这里的html文件名必须加双引号,这个文件里面写什么内容,
前端页面就会展现什么内容
redirect:重定向
静态文件
网站所用到的已经写好的文件(css,js,图片)
通常网站所用到的静态文件都会存放到static文件夹
django静态文件配置
STATIC_URL = '/static/' # 接口前缀
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'),
]
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.3.7/css/bootstrap.min.css'%}">
<script src={% static "bootstrap-3.3.7/js/bootstrap.min.js"%}></script>
form表单默认是get请求
get请求携带的参数是拼接在url后面的以?开头&链接
ps:get请求可以携带参数 但是参数的大小有限制 最大4KB,并且是明文的
这个是因为浏览器对url的长度是有限制的,不能太长,而且不同的浏览器对url的
长度限制是不一样的,
post请求是将请求的数据放在请求体中,HTTP协议本身是对这个数据长度没有限制的
理论上是可以无限长,但是服务器处理数据处理程序的能力也限制了这个长度不能无限长
http://127.0.0.1:8000/login/?username=jason&password=123
获取用户输入的框 都必须要有name属性
action参数有三种写法
1.什么都不写 默认往当前页面的url地址提交
2.只写路由后缀(******)
3.写全路径
pycharm连接数据库
pycharm 提供了操作数据库的接口,在右侧,点击database
django连接mysql
sqlite Django自带的一个小型数据库,但是它支持的功能不是很多,对时间
等数据格式也不是很敏感
1.配置文件setting中配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day19',
'USER':'root',
'PASSWORD':'123',
'HOST':'127.0.0.1',
'PORT':3306,
'CHARSET':'utf8'
}
}
2.去应用名下的__init__.py或者项目名下的__init__.py文件中 告诉django不要使用默认的mysqld_db模块连接mysql而是使用pymysql
import pymysql
pymysql.install_as_MySQLdb()
ORM
对象关系映射
类 >>> 数据库的表
对象 >>> 数据库里面的一条条的表记录
对象点属性 >>> 表记录的某个字段对应的值
ps:
能够让一个不会数据库操作的人 也能够通过编程语言轻松的操作数据库
sql语句已经封装好了,有时候sql语句的查询效率可能偏低
在django中的models.py中创建类,这个类就可以映射成数据库中的表
django orm注意事项
django orm不会帮你自动创建库 只能帮你自动创建表
1.models.py中写模型类
2.执行数据库迁移(同步)命令
python3 manage.py makemigrations 将数据的更改操作记录到小本本上
python3 manage.py migrate 将更改真正同步到数据库
(这两句命令需要记住 这两条命令要在Pycharm下面的Teminal中执行)
编辑
基于已经存在了的数据进行修改
先将用户想要修改的数据查询出来 并且展示给用户看
用户修改完之后发送post请求 后端修改数据
数据的增删改查
增
1.create()
modeles.User.objects.create(kwargs)
create方法会返回当前所创建的数据对象(*****)
2.对象.save()
user_obj = models.User()
user_obj.username = 'jason'
user_obj.save()
删
queryset对象.delete()
改
1.update()
models.User.objects.filter(kwargs).update()
批量更新
2.对象.save()
user_obj = models.User(kwargs)
user_obj.username = 'jason'
user_obj.save()
效率较低
查
1.all() 查所有 不需要传参数
2.filter(kwargs) 结构是一个queryset对象 你可以把它看成一个列表里面是一个个的数据对象
django的视图函数返回的是一个HttpResponse对象
django请求生命周期
request.GET 获取get请求携带的参数
request.POST 获取post请求携带的参数
上面两者在用get取值的时候 默认取列表最后一个元素
如果想整体取用getlist
request.method 获取当前请求方式
HTTP协议
django正常启动
django命令
创建
启动
数据库迁移命令
app注册
静态文件配置 ******
数据库连接配置
写一个图书管理系统
实现图书的增删改查