一、Django小白必会三板斧
"""
HttpResponse(返回字符串)
返回字符串类型的数据
render(跳转网址)
返回html文件的
redirect (返回一个页面)
重定向
return redirect('http://www.baidu.com/')
return redirect('/home/')
"""
# app下的views.py文件中导入render,HttpResponse,redirect
from django.shortcuts import render,HttpResponse,redirect
# Create your views here.
def index(request):
# 视图函数必须要接收一个形参request
return HttpResponse('字符串')
def login(request):
user_dict = {'username':'joson','age':18}
# 第一种传值方式:更加精确,节省资源
# return render(request,'myfirst.html',{'data':user_dict,'deta':123})
# 第二种传值方式:当你要传的值特别多的时候
# locals会将所在名称空间所有的名字全部传递给html界面
return render(request,'myfirst.html',locals())
def home(request):
# return redirect('http://www.baidu.com')
return redirect('/index')
-
另外django还有一个很人性化的地方
运行中的项目当你修改你的项目代码后django会自动重启,有时候会比较慢,你可以手动点击重启
二、静态文件配置
# 登录功能
"""
我们讲html文件默认都放在templates文件下
我们讲网站使用的静态文件默认都放在static文件夹下
静态文件
前端已经写好了的 能够直接调用使用的文件
网站写好的js文件
网站写好的css文件
网站用到的图片文件
第三方前端框架
...
拿来就可以直接使用的
"""
# Django默认是不会自动帮你创建static文件夹 需要你自己手动创建
static
├─ bootstrap 前端已经写好了的能够直接调用的文件
├─ js 写好的js文件
├─ css 写好的css文件
├─ img 用到的img文件
└─ 其他第三方文件资源
# 解耦合 方便管理
"""
在浏览器中输入url能够看到对应的资源
是因为后端提前开设了该资源的接口
如果访问不到资源 说明后端没有开设该资源的接口
"""
settings.py 静态文件配置
# 如果想要访问静态文件就必须以static开头
STATIC_URL = '/static/' # 接口前缀 类似于访问静态文件的令牌
"""
例如有此路径:
<script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
/static/ 前面这个就是接口前缀
bootstrap-3.3.7-dist/js/bootstrap.min.js 后面的就是路径
书写了接口前缀之后 就拥有了访问下列列表中所有文件夹内部资源的权限
然后会以从上往下的顺序在列表里面依次查找,直到拿到路径返回给页面
都没有才会报错
"""
# 静态文件配置
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static') # 这个static就是真正的静态文件夹路径
os.path.join(BASE_DIR, 'static1')
os.path.join(BASE_DIR, 'static2')
]
静态文件接口前缀动态解析
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动态解析</title>
{% 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>
</head>
<body>
</body>
</html>
# form表单默认使用的是get请求数据
# form表单action参数:控制后端提交的路径
"""
1.不写:默认朝当前所在的url(页面地址)提交数据
2.全写:指名道姓 https://www.baidu.com
3.只写后缀 :/index/
form表单method参数:默认是get请求,可以改成post请求
"""
get和post的区别?
http://127.0.0.1:8000/login/?a=1&b=2&c=3
'''
get请求:
1. get没有请求体
2. 对数据大小的限制是4KB
3. 不安全
post请求:
1. post才有请求体
2. 对数据大小没有限制
3. 安全
'''
在前期使用django提交post请求的时候需要先去配置文件中注释掉一行代码 :看下图
三、pycharm链接MySQL
四、Django连接MySQL
1.在settings.py配置文件修改配置
"""django默认使用自带的sqlite3"""
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db666', # 数据库名称 一定要事先创建好才能指定
'HOST':'127.0.0.1', # 数据库IP,暂用本地回环地址
'PORT':3306, # 数据库端口
'USER':'root', # 数据库用户名
'PASSWORD':'123', # 数据库密码
'CHARSET':'utf8' # 指定字符编码
}
}
2.在项目文件夹或者应用文件夹内的__init__.py文件中书写固定的代码
-
django默认用的是mysqldb模块链接MySQL
但是该模块的兼容性不好,需要手动改为用pymysql模块链接
'''
在python3.6版本以下,需要加入下面两句话
需要先安装pymysql
pip3 install pymysql
import pymysql
pymysql.install_as_MySQLdb()
'''