Django(二)
配置文件的介绍
SECRET_KEY = 'django-insecure-l90y*hw_4v_&tgpwi$js+7)899ltdn=$=3$c!yct!f*mc6u#0j' # 盐
DEBUG = True # 不想显示错误就改成False,上线的时候在改成False
# 配置数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# 改语言
LANGUAGE_CODE = 'zh-hans'
# 改时区
TIME_ZONE = 'Asia/Shanghai'
静态文件的配置
"""
在Django中一般吧html放到tempates下面
静态文件放到static文件夹下面
静态文件:
CSS文件
JS文件
img
第三方前端框架:bootstrap相关的
Django不会自动创建static,需要手动创建
名字无所谓,推荐叫static,在static里面可以按照不同的功能进行划分
"""
# 在浏览器中输入网址,如果找不到,说明对应的服务端没有开设对外访问的接口
# 静态文件配置
STATIC_URL = '/static/'
# 以后凡是找静态文件,都从下面的列表中得路径去找
# STATICFILES_DIRS = [
# '/static/css/my.css'
# ]
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
# 动态解析
{% load static %} # 动态解析,在html写上这些,以后STATIC_URL = '/static/'这个位置可以随便改
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
<script src="{% static 'js/jquery.min.js' %}"></script>
<script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>
request对象的方法
<form action="/login">
# 1. 全写
# 2. 什么都不写------------->默认朝当前地址提交
# 3. 写后缀
提交post请求方式的表单的时候需要去配置文件中找到MIDDLEWARE然后注释掉里面这句话#'django.middleware.csrf.CsrfViewMiddleware',
print(request.POST) # 接收post请求提交过来的数据
print(request.POST.get('username')) # 获取的是字典里面key=username的值
print(request.POST.get('password')) # 获取的是字典里面key=password的值
print(request.POST.get('hobby')) # 获取的是字典里面hobby这个列表里面最后一位
print(request.POST.getlist('hobby')) # 获取的是字典里面hobby整个列表
print(request.GET) # 打印的是浏览器申请的数据
print(request.GET.get('username')) # 没有值就None
print(request.GET.getlist('hobby')) # 没有值就空列表
pycharm链接数据库(MySQL)
# 这个时候pycharm就是数据库的客户端了,类似于Navicat,
Django链接数据库(MySQL)(掌握)
# django默认自带的有一个小型数据库-------------->sqllite
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# 链接MySQL数据库
'default': { # 用这个替换上面那个,里面的具体参数按自己的需求修改
'ENGINE': 'django.db.backends.mysql', # 引擎
'NAME': 'db9', # 数据库名称
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '123',
'CAHRSET': 'utf8',
}
# 以上配置改完之后,框架启动不起来了
'''
djang框架底层链接MySQL用的模块是MySQLdb模块,这个模块的兼容性很差,所以,我们不用
我们认为的把MySQLdb模块改为pymysql模块
'''
# 修改pymysql模块
在Django框架的任意__init__.py文件中加入以下两句话:
************************************************************************
import pymysql #这句话的意思其实就是猴子补丁
pymysql.install_as_MySQLdb()
************************************************************************
'''
如果你使用pymysql模块的话,每次都要加上面两句话,也很不方便,但是,你目前先用着
后面还有个模块:mysqlclient模块,这个模块的兼容性非常强,就不用在加任何东西
它有个缺点:一般情况下,安装不上.
'''
Django的ORM操作
ORM: 对象关系映射
作用:我们以后再操作数据库的时候,就不用在写原生sql语句,用面向对象的代码去写,然后他给你翻译成原生sql语句。
# 缺点:封装程度太高,ORM的sql执行效率没有原生sql执行的效率高,这个效率的影响暂时忽略
# 关系映射:
表 >>>: 类名
记录 >>>: 对象
字段 >>>: 属性
'''我们的ORM相关代码写在哪里呢?在models.py文件中写'''
# 创建一张表出来
class User(models.Model): # 每个类必须继承models.Model 表名:User
id = models.AutoField(primary_key=True) # 创建一个主键
username = models.CharField(max_length=32) # varchar(32),max_length=32必填,具体数字随便
password = models.CharField(max_length=32)
age = models.IntegerField() # int
# 代码写完之后,需要执行两个命令才能把表创建出来
# *******************************************************************************
python36 manage.py makemigrations # 相当于把迁移过程发生的事情给你记下来了
python36 manage.py migrate # 这句话才真正的把表创建出来
'''上面两句话缺一不可,都要执行!!!'''
'''只要修改了跟数据库相关的代码,都要执行上面两句话'''
# *******************************************************************************
class Author(models.Model):
''''
由于每张表都应该有一个主键字段,并且主键字段名都叫id,如果满足这两个条件,那么,可以省略不写,自动帮你创建主键字段出来
'''
# username varchar(32)
username = models.CharField(max_length=32)
# password varchar(32)
password = models.CharField(max_length=32)
orm针对字段的增删改查
# 增加
class User(models.Model):
# 在类里写上自己要增加的字段,然后写上那两条语句
# 删除 直接注释后执行那两条语句
数据的增删改查
# 查
res=models.UserInfo.objects.filter(u.sername=username, password=password).first()
'''filter(username=username, password=password)里面的条件是and关系'''
# print(res[0]) # <QuerySet [<UserInfo: UserInfo object>]>
# print(res[0].username) # <QuerySet [<UserInfo: UserInfo object>]>
# print(res[0].password) # <QuerySet [<UserInfo: UserInfo object>]>
if res:
# print('登录成功')
models.UserInfo.objects.create(username='tank', password='123')
else:
print('用户名或者密码错误')
# 插入数据
models.UserInfo.objects.create(username='tank', password='123')
标签:username,models,request,Django,static,print,password
From: https://www.cnblogs.com/juzixiong/p/17347663.html