Django基础练习
知识了解
用户能够访问的所有的资源,都是程序员提前暴露好的,如果你没有暴露用户是永远访问不到的
django是可以自动重启的,但是有时候反应速度会比较慢,也有可能在你的代码没有写完的时候重启了,这里如果报错的话,不用去管他.
必会三板斧
首先在views.py视图界面下导入:
from django.shortcuts import render, HttpResponse, redirect
render #可以返回html页面
eg:
def login(request):
return rnder(request, 'login.html') #返回你指定的html页面
HttpResponse #返回字符串
eg:
def index(request):
return HttpRespinse('index') #返回你指定的字符串
redirect # 重定向
eg:
def home(request):
return redirect('http://www.baidu.com') #返回一个你指定的网站
静态文件配置
静态文件,就是你网站所用到的, 如:自己写好的JS,自己写好的CSS, 第三方的框架 (bootstrap, fontwesome, sweetalert)
在通常情况下,网站所用到的静态文件资源,统一都放在static文件夹的下
接着你需要在setting里写配置找到
STATIC_URL = '/static/' #这是访问静态资源的接口前缀,他表示的是如果你想访问静态的资源,就必须以static开头.
手动来配置静态文件的资源
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static') #把你自己创建的static文件夹放进去.
]
最后我们在实现一个动态的解析(为了防止老板闲着没有事)
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script>
form表单提交数据
form表单 action参数可以写的形式
1.不写 默认向当前地址提交
2.只写后缀如/index/
3.写全路径
form表单默认朝后端提交数据的方式是get请求.
get请求会直接把你输入的值给显示在url的后面.
缺点:
1.不安全
2.get请求携带的参数大小有限制(最大不能超过4kb左右)
前期如果你想提交post数据的话, 你要先去settings.py文件中去注释掉一个中间件.然后把form里的method='post'这样就能提交post数据了
MIDDLEWARE = [
# 'django.middleware.csrf.CsrfViewMiddleware',
]
request对象及方法
前后端数据的交互
如何去获取请求方式
获取post请求携带的数据
request.POST
获取get请求携带的数据
request.GET
要知道get和post在后端获取用户数据的时候,规律都是一样的
针对不同的的数据请求我们要有不同的处理方式,一般这样来写:
if request.method == 'POST':
# 比如你的登录的话就是在post请求,可以在里面做一些逻辑处理
先拿到到客户端提交上来的数据:
username = requesr.POST.get("username")
res = models.Userinfo.objects.filter(user=username)
#相当与sql语句:select * from userinfo where username='kang';
print(res)# 这里查出的是列表类型的数据
user_obj = res.first() #这里我们是拿到第一条数据的一个对象,使用.属性的方法.可以去取我们想要的值.
if username == user_obj.username:
print('登录成功')
如果你是注册的话,上面的if语句如果不存在,可以直接执行下面的语句
user_obj = models.Userinfo.objects.create(username=username, password=password)
相当于sql语句:
insert into userinfo(username, password) values('kang', '123');
create方法会有一个反回值, 反回值就是当前被创建的数据对象
最后如果不是post请求的话,你可以直接进行反回数据
return render(request, 'login.html'), 如果你想拿出get请求的数据的话,和port用法一样.
4.数据库的连接
使用django连接数据库mysql
第一步:在配置文件当中配置
DATABASE = {
'default' :{
'ENGINE': 'django.db.backends.mysql', #指定连接mysql
'NAME': 'db1', #使用哪个数据库
'USER': 'root',
'PASSWORD': 'root',
'HOST':'127.0.0.1',
'PORT': 3306,
'CHARSET': 'utf8',
}
}
最后你要告诉一下django不要用mysqldb该用pymysql连接.
你可以在项目名下的__init__.py里,也可以在应用名下面的__init__.py文件里指定
import pymysql
pymysql.install_as_MySQLdb()
Django orm简介
orm对象关系映射
类 ---> 数据库的表
对象----> 表的记录
对象获取属性---> 记录某个字段对应的值
优点是:能够让一个不会数据库操作的人, 也能够简单快捷的去使用数据库
缺点: 由于封装的程度太高, 可能会导致程序的执行效率偏低,有时候结合项目可能需要你手写sql语句
注意事项:
1.django的orm不会自定帮你创建库的,这需要你自己去创建
表得话它会帮你创建, 你只需要书写符合django orm的语法的代码即可
需要去models.py中去书写类,
from django.db import models
class Userinfo(models.Model):
id = models.AutoField(primary_kry=Ture) #在django中,你可以不指定主键字段,它会自动的帮你创建
username = models.CharFiled(max_length=64) #这里表示 username varchar(64), CharField必须要指定max_length字段.
password = models.IntegerField()
重点掌握:
数据库迁移(同步)命令:
python manage.py makemigrations #这里不会创建表, 会将你当前的操作记录一下.(migrations)
python manage.py migrate # 将你的orm语句真正的迁移(同步)到数据库当中
只要你对models.py中修改了与数据库相关的代码, 你就必须重新开始执行上面的两条命令