一、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=bbb2.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 pymysqlpymysql.install_as_MySQLdb()'''只要是__init__文件即可 项目的 应用的都可以'''