一、Django主要目录结构
---mysite # 项目文件夹
|--manage.py # django的入口文件
|--db.sqlite3 # django自带的sqlite3数据库(小型数据库 功能不是很多还有bug)
|--mysite # 项目同名的文件夹
|--settings.py # 配置文件
|--urls.py # 路由与视图函数对应关系(路由层)
|--wsgi.py # 启动wsgiref模块(不需要考虑)
|--app01 # app文件夹
|--migrations # 存放ROM针对数据库相关的记录,数据库迁移记录(也可以叫日志)
|--admin.py # django自带的后台管理功能
|--apps.py # 注册使用
|--models.py # 数据库相关的 模型类(orm)
|--test.py # 测试文件
|--views.py # 视图层,该app对应的主题功能(视图函数、视图类)
重要:Django创建app,需要在配置文件内注册
假如创建了一个app02
必须在"settings.py"文件内,的INSTALLED_APPS内添加配置信息
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01.apps.App01Config',
'app02.apps.App02Config', # 这是全写
# 或者下面的,两者写一个
'app02' # 这是简写
]
!!!
养成一个习惯:
创建出一个app的时候,第一时间去添加settings的注册配置
二、django小白必会三板斧
1、HttpResponse
return HttpResponse("任意字符串")
# 暂且理解为可以返回给前端浏览器文本类的数据
2、render
return render(request,"[html文件]",{"name_list":["yly","zpx","zpx"]}) # 精准传
return render(request,"[html文件]",locals()) # 范围传,把当前名称空间内所有数据传输过去
# 返回templates/[html文件]
# 支持模板语法,与jinja2不同,作者自己写的
3、redirect
return redirect("http://www.mzitu.com/")
return redirect("/index/") # 可以只写后缀(默认补齐当前IP和PORT)
# 重定向
1、开发修改chrome设置
开发者在开发web的时候,常常会遇到缓存问题,而来回刷新页面
"""
可以通过:
F12开发者工具,设置禁用缓存,这样在打开F12开发者工具的时候刷新页面,是基于网络访问地址,而不是使用本地缓存。
-->settings
-->networks
-->disable cache
"""


2、静态文件配置
# 什么是静态文件
不会频繁更改的文件
css文件、js文件、第三方框架文件、图片
# django存储静态文件
static文件夹 # 暂时放在该项目内,不过以后放在nginx内,或者rsync服务器内
该文件内部还可以依据不同的功能划分不同的区域
css文件夹
js文件夹
img文件夹
others文件夹
2.1 STATIC简介
# 利用django编写用户登录功能
'''为什么前端请求不到后端的框架资源:我们没有开设对应的资源接口'''
针对静态资源的路径开设无需在urls.py中指定 只需要在settings配置文件指定即可
--------------------------------"settings.py"--------------------------------
# web接口前缀(要想访问静态资源 web路径的前缀就必须是这里指定的)
STATIC_URL = '/static/'
# 将该列表的所有文件夹所有的资源开设给外界
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'), # 项目目录下的静态文件夹的名称
os.path.join(BASE_DIR,'static1'),
os.path.join(BASE_DIR,'static2')
]
----------------------------------------------------------------------------
html文件的css和js导入可以写成
<link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.min.css">
不用写成
<link rel="stylesheet" href="../static/bootstrap-3.4.1-dist/css/bootstrap.min.css">
原理是:
查找的时候,网页前缀为static
# 接口前缀动态匹配(在html中写以下语法,自动获取settings的STATIC_URL)
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>
----------------------------------------------------------------------------
总结:
当用户输入了"STATIC_URL"开头的接口路径前缀
就会在"STATICFILES_DIRS"目录下,查找后缀名的文件,
查找顺序是按照该列表的索引开始查找,也即从索引0开始以此查找
从上往下依查找对应的资源
接口前缀正确之后 拿着后面的路径去列表中,找到了就不再继续往下找
2.2 STATIC编程习惯
html需要的静态资源需要引用,直接写为:
/static/xxx/abc.jpg
当需要扩展静态资源文件夹的时候:
# 修改settings.py的
STATICFILES_DIRS=[
os.path.join(BASE_DIR,'项目内的静态资源文件夹名'),
]
# 这里其实是拼接项目的目录名,将项目的BASE_DIR和静态资源文件夹名组合
三、网络请求方式
1.get请求
朝别人索要数据
eg:浏览器地址栏输入www.baidu.com回车
get请求没有请求体
get请求也可以携带一些的额外的参数 但是大小有限制(2KB)
url?xxx=yyy&aaa=bbb
2.post请求
朝别人提交数据
eg:用户注册登录填写完身份数据之后提交
post请求有请求体
post请求也可以携带数据 并且大小没有限制 在请求体中
四、form表单重要参数
action # 控制数据提交的地址
1.写全路径 https://www.baidu.com
2.写后缀(ip和端口自动补全当前服务器) /index/
3.不写 提交给当前页面所在的地址
method # 控制数据提交的方式
get form表单默认是get请求
post
"""
注意使用django前期在提交post请求之前需要去配置文件中注释掉一行代码
MIDDLEWARE = [
# 'django.middleware.csrf.CsrfViewMiddleware',
]
"""
五、requests对象方法
request.method # 获取请求方式名(纯大写的字符串)
request.POST # 获取post请求提交的普通数据
request.POST.get()
request.POST.getlist()
request.GET # 获取get请求url问号后面的数据
request.GET.get()
request.GET.getlist()
def login(request):
if request.method == 'POST':
username = request.POST.get('username') # 默认只会取列表最后一个元素
password = request.POST.get('password')
if username == 'jason' and password == '123':
return HttpResponse('OK')
else:
return HttpResponse('用户名或密码错误')
return render(request, 'login.html')
六、pycharm链接MySQL
database选项
# pycharm有可能会报错
Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezon
解决:
cmd
mysql -uroot -p123
set global time_zone = '+8:00';
show variables like'%time_zone';
详见:https://blog.csdn.net/liuqiker/article/details/102455077


七、django链接MySQL(必会)
# 第一步配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db4_3',
'USER':'root',
'PORT':3306,
'HOST':'127.0.0.1',
'PASSWORD':'123',
'CHARSET':'utf8'
}
}
# 第二步配置(3.6及以下解释器 需要额外的配置)
import pymysql
pymysql.install_as_MySQLdb()
'''只要是__init__文件即可 项目的 应用的都可以'''