table of Contents
django configuration
Static configuration file
What static files: Web site used to advance to write css, js, third-party front-end module, images are called static resources
By default, all html files are on the templates folder
Static resource files used by all websites on the static default file folder
Typically the static folder inside another folder will build as: css, js, font, img, bootstrap ...
STATIC_URL = '/static/' # 访问静态文件资源接口前缀 通常情况下接口前缀的名字也叫static
# 手动开设静态文件访问资源
STATICFILES_DIRS = [ # 静态资源所在的文件夹路径
os.path.join(BASE_DIR,'static'), # 将static文件里面所有的资源暴露给用户
os.path.join(BASE_DIR,'static1'), # 将static文件里面所有的资源暴露给用户
# os.path.join(BASE_DIR,'static2'), # 将static文件里面所有的资源暴露给用户
]
Static files Dynamic Binding
{% load static %} <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}"> <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
The default is to get a request form form
get request can also carry parameters
http://127.0.0.1:8000/login/?username=jason&password=jason123
特点:url?xxx=xxx&yyy=yyy
1.携带的数据不安全
2.携带的数据大小有限制 最大好像应该差不多在4KB左右
3.通常只会携带一些不是很重要的数据
aciton
- Do not write default submission towards current address
- Write only the suffix / index
- Write full path
Pre-case re-submit the request appears toward the rear end 403, you need to get comment out a line in the configuration file content
# 中间件
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
django后端的视图函数 默认处理的是get请求
无论是发get请求还是post请求 都会执行视图函数
request method acquaintance
request.method: acquisition request mode, and write the string is pure greatly
requesr.POST: Get user submits a request data post
How to get user data
request.GET.get () # default Gets the last element of the list
request.GET.getlist () # if you want to get a list with getlist ()
pycharm database connection
django connect to MySQL
There must be two operations
1.配置文件配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 指定数据库类型
'NAME': 'day49', # 指定库的名字
'USER':'root', # 注意 键必须是全大写
'PASSWORD':'123qwe',
'HOST':'127.0.0.1',
'PORT':3306,
'CHARSET':'utf8'
}
}
2.主动告诉django 不要用默认的mysqldb连接 而是用pymysql
你可以在项目名下的__init__.py中书写
也可以在应用名下的__init__.py中书写
pymysql.install_as_MySQLdb()
Introduction of django orm
orm 对象关系映射
类 表
对象 数据
对象点属性 字段对应的值
为什么使用orm
能够让不会数据库操作的人也能够简单方便去操作数据库
orm的缺点
封装程度太高 有时候会出现查询效率偏低的问题
所以工作中
简单的用orm
复杂的 追速度 需要你手动书写sql语句
之后在写django项目的时候 一个django就对应一个数据库
不要出现多个项目使用同一个数据的情况(******)
Field of deletions model change search
Modify field
直接修改代码 然后执行数据库迁移命令即可(两条一条不能少)
# 方式1 设置默认值
email = models.EmailField(default='[email protected]') # varchar
# 方式2 允许字段为空
phone = models.BigIntegerField(null=True)
# 直接在提示中给默认值
gender = models.CharField(max_length=32)
python manage.py makemigrations
python manage.py migrate
Delete field
直接注释掉对应的字段 然后再执行数据库迁移命令即可(谨慎使用)
Deletions model change search table data
data = models.User.objects.filter(username=username) # <QuerySet [<User: User object>]>
"""
filter返回的结果是一个"列表",里面才是真正数据对象
filer括号内可以放多个关键字参数 这多个关键字参数在查询的时候 是and关系
"""
user_list = models.User.objects.all() # models.User.objects.filter()
"""
结果是一个"列表" 里面是一个个的数据对象
"""
increase
user_obj = models.User.objects.create(username=username,password=password)
print(user_obj,user_obj.username,user_obj.password)
# create方法会有一个返回值 返回值就是当前被创建的对象本身
change
models.User.objects.filter(id=edit_id).update(username=username,password=password)
"""
批量操作 会将filter查询出来的列表中所有的对象全部更新
"""
Deleted (under normal circumstances will not be used)
models.User.objects.filter(id=delete_id).delete()
"""
批量操作 会将filter查询出来的列表中所有的对象全部删除
"""