Django框架学习笔记
web框架分类
Django Flask tornado
Fjango 2 3
Flask 2
tornado 1 2 3
Django 大而全 中性武器
Flask tornado 轻量级框架
创建一个django项目
django-admin startproject test
目录介绍
E:\PYCODE\DJANGOTEST\test
│ manage.py # 管理文件
└───test # 项目目录
settings.py #配置
urls.py #路由---> url和函数的对应关系
wsgi.py # runserver命令就使用 wsgiref模块坐简单的Web server
__init__.py
运行jango项目
python manage.py runserver 127.0.0.1:8000
python manage.py runserver 80
python manage.py runserver 0.0.0.0:80
配置文件模板
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'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',
],
},
},
]
配置静态文件目录
STATIC_URL = '/static/' # 静态文件地址
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
form表单注意的点
-
form标签的属性action 和method的地址(不写默认当前地址),method请求方式
-
input标签必须有name属性,有的标签还需要value
-
有一个button按钮或者是type='submit’的input
在同一个项目下创建另外一个模块
python manage.py startapp app01
修改setting 配置文件
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01', # 直接写app的名称
'app01.apps.App01Config'
]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HvqrUo0g-1612331469332)(C:\Users\dell\Desktop\学习笔记\image-20201208134141543.png)]
ORM ObjectRelational Mapping(ORM)
对应关系:
类 --》 表
对象 --》 数据行(记录)
属性 ——》字段
使用ORM
- setting配置数据库连接
- 在app下的model写类
class User(models.Model):
username = models.CharField(max_length=32) # varchar
password = models.CharField(max_length=32) # varchar
- 执行数据迁移指令
python manage.py startapp app01
python manage.py makemigrations #检测所有APP下的models.py 讲变更记录制作成迁移文件
python manage.py migrate #真正数据的迁移讲变更的记录同步在数据库种
urls.py 路径和函数对应关系
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', views.index),
url(r'^$',views.dufault),
url(r'^login/', views.login),
]
views.py 写函数
def login(request):
request.method # 请求方式 GET POST\
request.POST # POST请求提交数据
request.GET # url上的查询参数
# ret = models.User.objects.all() 获取所有数据值
# ret = models.User.objects.filter() 获取匹配值
return render(request, 'login.html')
return render(request, 'login.html')
return redirect('/login/') #路由重定向
#返回字符串
return HttpResponse()
get 和 post 获取一个资源
get 获取一个资源
在地址栏中输入地址回车.
post 提交数据
request.POST
9.ORM
ORM对象关系映射通过操作类,对象的方式去操作数据库.
对应关系
面向对象的, 数据库
面向对象 数据库
类 ===>表
对象 ===> 数据行(记录)
属性 ====> 字段
给数据修改表结构:
1.在app下写models.py中写类(model)
django数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'login',
'HOST':'192.168.30.50',
'PORT': 3306,
'USER':'root',
'PASSWORD':'XXXXXX'
}
}
django中orm中所有的方法(QuerySet对像所有的方法)
all(): 查询所有结果
filter(**kwargs): 它包含了与所给筛选条件相匹配的对象。获取不到返回None
get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个。
如果符合筛选条件的对象超过一个或者没有都会抛出错误。
exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象
order_by(*field): 对查询结果排序
reverse(): 对查询结果反向排序
count(): 返回数据库中匹配查询(QuerySet)的对象数量。
first(): 返回第一条记录
last(): 返回最后一条记录
exists(): 如果QuerySet包含数据,就返回True,否则返回False
values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的
并不是一系 model的实例化对象,而是一个可迭代的字典序列
values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
distinct(): 从返回结果中剔除重复纪录
3.使用pymysql的模块连接MySQL数据库
习惯写入于项目同名的文件夹下的__init__.py
import pymysql
pymysql.install_as_MySQLdb()