day03 Django目录结构与reques对象方法
day03 Django目录结构与reques对象方法
今日内容概要
- django主要目录结构
- 创建app注意事项(重点)
- djago小白必会三板斧
- 静态文件配置(登录功能)
- requeste对象方法a
- pycharm链接MySQL
- django链接MySQL(重点)
django主要目录结构
mysite项目文件夹
mysite文件夹:
settings.py :django暴露给用户可以自定义配置的文件
urls.py :路由与视图函数对应关系(路由层)
wsgi.py :依赖于wsgiref模块的socket启动部分
manage.py :django的入口文件
db.sqlite3 :django自带的小型数据库(针对日期格式无法精准存取)
templates文件夹 :存放html文件
static文件夹 :存放静态文件(css,js,img等)
app01文件夹
admin.py :django后台管理
apps.py :注册使用
migrations文件夹 :数据库迁移文件(存放ORM针对数据库相关的记录)
models.py :数据库相关的模型类(orm)
tests.py :测试文件
views.py :该app对应的主题功能,视图函数(视图层)
# 专业说法
usrl.py :路由层
views.py :视图层
templates :模板层
models.py :模型层
创建app注意事项(重点)
1.创建app之后一定要去settings.py中注册 # 不注册,项目会找不到创建的app
app注册方式有两种方式:
全写:'app01.apps.App01Config',
简写:'app02'
INSTALLED_APPS = [
# 全写
'app01.apps.App01Config',
# 简写
'app02'
]
2.templates路径配置去settings.py中修改
TEMPLATES = [
{
'DIRS': [os.path.join(BASE_DIR, 'templates')] # 把templates文件夹放到全局里面
}
3、post请求会出现403
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware', # 把这行注释就好了
]
# 注:django是会自动重启的,但是自动重启的时间优点长。
# 原理是:只要修改一点配置django就会重启,有时还没修改完会报错不用理会,修改完后在重启。
djingo小白必会三板斧
1、HttpResponse:返回文本,参数为字符串,字符串中写文本内容。如果参数为字符串里含有 html 标签,也可以渲染。
# 实例:
def index(request):
return HttpResponse('hello django!')
暂且理解为可以返回给前端浏览器文本类的数据
2、render:返回文本,第一个参数为 request,第二个参数为字符串(页面名称),第三个参数为字典(可选参数,向页面传递的参数:键为页面参数名,值为views参数名)。
# 实例:
def index(request):
return render(request,'index.html',{'n1':[1,2,3]}) # 精准传(复杂但节省资源)
return render(request,'index.html',locals()) # 范围传(简单但不节省资源)
返回给前端浏览器html页面 并且提供模板语法
3、redirect:重定向,跳转新页面。参数为字符串,字符串中填写页面路径。一般用于 form 表单提交后,跳转到新页面。
# 实例:
def index(request):
return redirect('https://www.baidu.com') # 可以写全称
return redirect('/admin/') # 也可以只写后缀(默认补齐当前IP和PORT)
# 注意事项:
1、django默认的端口号是8000
在同一台机器同一时间如果需要运行多个django项目 需要修改端口号。不然会造成端口冲突。
# 修改端口号两种方式:
python3 manage.py runserver ip:port # 命令行修改
pycharm自主修改:右上角点项目名称----->第一个---->port修改 # pycharm自主修改
2、浏览器缓存:会影响项目测试
# 解决方法:清除浏览器缓存
浏览器开发者面板---->networks----->disable cache(清除缓存)
静态文件配置
# 注:
开放了静态资源,所有人都可以通过网址来找到开放的资源 # 切记核心代码不要开放,不然会泄露
问题1:已经加上bootstrap文件但是没有添加样式
Request URL: http://127.0.0.1:8000/static/bootstrap-3.4.1-dist/css/bootstrap.min.css
Status Code: 404 Not Found
# 因为没有向外界开放static文件夹资源
# 解决:
'''为什么前端请求不到后端的框架资源:我们没有开设对应的资源接口'''
# 1)针对静态资源的路径开设无需在urls.py中指定 只需要在settings.py配置文件指定即可
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static') # 开放static文件夹资源
]
# 2)html文件修改,既然已经开放了资源,写相对路径就可以,不用写绝对路径
<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>
1、什么是静态文件
答:网站提前写好不会频繁更改的文件
静态文件:css文件、js文件、第三方框架文件、图片
2、django存储静态文件
# 会创建一个static文件夹,专门存放静态文件
static文件夹: 该文件内部还可以依据不同的功能划分不同的区域
css文件夹
js文件夹
img文件夹
others文件夹
3、进阶关系(重点)
'''切记:不要开放核心代码资源,会造成源代码泄露的严重后果'''
STATIC_URL = '/static/' # 接口前缀(要想访问静态资源 那么路径的前缀就必须是这里指定的)
# 将static文件夹所有的资源开设给外界
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'), # 文件夹名称
]
# 决定找到文件的是 “接口前缀”,如果把接口前缀改了,那么就找不到这个资源。
"""
接口前缀正确之后 拿着后面的路径去列表中
从上往下依查找对应的资源 找到了就不再继续往下找
"""
4、接口前缀动态匹配
# 需求:有100份html文件,都需要改接口前缀。如何快速的修改?
# 解决:html文件添加下面固定样式,实时修改接口前缀。
# 原配置:
<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>
# 修改:
{% 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>
网络请求方式
1、get请求:向别人索要数据
eg:浏览器地址栏输入www.baidu.com回车
# 特点:
get请求没有请求体
get请求也可以携带一些的额外的参数,但是大小有限制(2kb)
https://www.baidu.com/s?cl=3&tn=baidutop10&fr=top1000 # 地址后边加上?为get请求
2、post请求:向别人提交数据
eg:用户注册登录填写完身份数据之后提交
# 特点:
post请求有请求体
post请求也可以携带数据,并且大小没有限制,在 请求体中。
form表单重要参数
action:# 控制数据提交的网址
1.写全路径:https://www.baidu.com
2.写后缀(ip和端口自动补全当前服务器) # 比如就写一个:/index/
3.不写,提交给当前页面所在的地址
method: # 控制数据提交的方式
get:form表单默认是get请求
post:使用前提,需要修改settings.py文件中一行代码,不然会报403
1、使用post请求遇到403怎么解决呢?
# 注释掉这一行,就不会报403权限不足。
MIDDLEWARE = [
# 'django.middleware.csrf.CsrfViewMiddleware',
]
request对象方法
1、request.method # 获取请求方式名(纯大写的字符串)
GET POST
2、request.POST # 获取post请求提交的普通数据,并以字典的形式
request.POST.get() # 获取列表最后一个元素
request.POST.getlist() # 获取整个列表的数据
3、request.GET # 获取get请求url问号后面的数据
request.GET.get()
request.GET.getlist()
简易版本登录注册功能
<QueryDict: {'username': ['meng'], 'password': ['123']}> # 获取到post提交的数据,是一个字典
def login(request):
# print(request.method) # 获取当前请求方法名(纯大写字符串)
if request.method == 'POST':
# 获取用户提交的post请求普通数据(不包含文件、视屏等)
# print(request.POST)
username = request.POST.get('username') # 默认只会取列表最后一个元素
password = request.POST.get('password') # 想要获取数据,前提:input加上name属性
if username == 'meng' and password == '123':
return HttpResponse('网站首页')
else:
return HttpResponse('用户名密码错误')
else:
# 返回给用户一个登录页面(html文件)
return render(request, 'login.html')
pycharm链接MySQL
# pycharm右上角点database按钮,一路点点点。
django链接MySQL(重点)
第一步:修改settings.py文件 # 在databases中修改数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db1',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '123',
'CHARSET':'urf8',
}
}
第二步:在__init__文件中添加配置 # 不然会报错
import pymysql
pymysql.install_as_MySQLdb()
'''只要是__init__文件即可 项目的 应用的都可以'''
day03 Django目录结构与reques对象方法的更多相关文章
- Django Auth模块及User对象方法
一:Django的用户认证 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1:authenticat ...
- 层级目录结构的Makefile递归编译方法
层级目录结构的Makefile编写方法. 层级目录结构的Makefile编写方法. 0.前言 1.如何编译整个工程 2.过滤每层不需要编译的目录 3将所有输出文件定向输出. 0.前言 假如现在有这样一 ...
- Django工程目录结构优化
1.我看到这篇文章,写的不错,在此复制了一份,防止以后找不到! 感谢作者的翻译--->原文的链接:http://www.loonapp.com/blog/11/ 如果原文存在,请打开原文件阅读 ...
- Django 基本使用及目录结构
1.安装 pip3 install django 默认为最新版 2.创建Django项目 在即将创建的Django项目,目录下运行命令 1.django-admin startproject my_p ...
- [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]
[Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...
- HttpResponse,render,redirect,静态文件配置,request对象方法,pycharm连接MySQL,django连接MySQL,django ORM
HttpResponse 主要用于返回字符串类型的数据 def index(request): return HttpResponse('index页面') 在页面中就会显示 index页面 rend ...
- django三板斧与request对象方法与ORM
目录 django三板斧 HttpResponse() render() redirect() 网页获取静态文件样式 request对象方法 post请求问题 针对get请求和post请求执行不同代码 ...
- Django 创建 APP和目录结构介绍
一.通过pip安装Django 以windows 系统中使用pip命令安装为例 win+r,调出cmd,运行命令:pip install django自动安装PyPi 提供的最新版本.指定版本,可使用 ...
- 二十一、【.Net开源框架】EFW框架Web前端开发之目录结构和使用FireBug调试方法
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan.baidu. ...
随机推荐
- 手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序
上一篇:手把手教你学Dapr - 2. 必须知道的概念 注意: 文章中提到的命令行工具即是Windows Terminal/PowerShell/cmd其中的一个,推荐使用Windows Termin ...
- VCS常用仿真选项开关及步骤总结
转自:https://blog.csdn.net/bcs_01/article/details/79803304 转自:https://blog.csdn.net/wonder_coole/artic ...
- cf14C Four Segments(计算几何)
题意: 给四个线段(两个端点的坐标). 判断这四个线段能否构成一个矩形.(矩形的四条边都平行于X轴或Y轴) 思路: 计算几何 代码: class Point{ public: int x,y; voi ...
- Shadertoy 教程 Part 5 - 运用SDF绘制出更多的2D图形
Note: This series blog was translated from Nathan Vaughn's Shaders Language Tutorial and has been au ...
- js this指向汇总
this指向 普通函数 window 定时器函数 window 事件函数 事件源 箭头函数 父function中的this,没有就是window 对象函数 对象本身 构造函数 实例化 ...
- Python-爬取CVE漏洞库👻
Python-爬取CVE漏洞库 最近吧准备复现一下近几年的漏洞,一个一个的去找太麻烦了.今天做到第几页后面过几天再来可能就不记得了.所以我想这搞个爬虫给他爬下来做个excel表格,那就清楚多了.奈何还 ...
- 亚马逊开发者用户授权 AWS
在开发之前最好的方法是先拿到官网的API文档简单的预览一遍 这里有个中文文档:AWS 开发中文文档 需要准备: 注册成为开发者 创建 AWS 账户 创建 IAM 用户 创建 IAM 策略 创建 IAM ...
- 体验webhooks
一.webhooks是什么 webhooks是一种实现在web api跟web service之间的发布订阅的轻量级的模式:当服务中心某个事件发生的时候,就会向订阅者发送一个POST请求形式的通知,这 ...
- python datetime 增减以月为单位的时间段
datetime.timedelta(days=10) # 可以 datetime.timedelta(months=1) # 不可以 替代: from datetime import date ...
- mybatis插入数据时处理为null的属性
在做项目的时候,数据库中的所有字段被设置为全都不能为null,但是在我们开发过程中,插入一些记录的时候,实体类中的一些字段如果页面没有传入,则默认就会被设置为null,这样的话,在执行插入语句的时候, ...