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. ...
随机推荐
- hdu 3038 How Many Answers Are Wrong(并查集)
题意: N和M.有N个数. M个回答:ai, bi, si.代表:sum(ai...bi)=si.如果这个回答和之前的冲突,则这个回答是假的. 问:M个回答中有几个是错误的. 思路: 如果知道sum( ...
- iostat主要性能指标
iostat参数很多,日常运维中主要关注一下字段(根据这些字段的输出内容一般就可以确定服务器是否存在IO性能瓶颈) 1.%iowait:CPU等待输入输出完成时间的百分比.该值较高,表示磁盘存在I/O ...
- 记一次,因表变量导致SQL执行效率变慢
场景 最近工作中,发现某同步JOB在执行中经常抛出SQL执行超时的问题,查看日志发现每次SQL执行的时间都是线性增长的,循环执行50次以后执行时间甚至超过了5分钟 JOB执行流程分析 首先,对于JO ...
- jenkins 安装与使用
1.jenkins下载:https://jenkins.io/zh/download/ 2.将下载好的war包放到tomcat容器下的D:\apache-tomcat-9.0.10\webapps下( ...
- Java测试开发--sts安装Lombok(七)
1.sts安装Lombok的步骤: 下载最新的lombok.jar包,进入cmd窗口,切到Lombok下载的目录,运行命令: java -jar lombok.jar,会出现如下界面: 已经默认选好了 ...
- css 马赛克悬停效果
css 马赛克悬停效果 <!DOCTYPE html> <html lang="en"> <head> <meta charset=
- 后台管理系统:vue&node&MongoDB(一)
后台管理系统 使用工具: Vue Node Mongodb Element-ui 一.后台(Node+Mongodb) 前期准备: 需要下载的包: mongooes -------- ...
- 作为Bootstrap中文站维护者-我们再次翻译BootstrapVue项目
点击立即进入BootstrapVue中文站 http://code.z01.com/bootstrap-Vue Bootstrap-Vue 基于全球最流行的前端框架组合应用系统 项目介绍 Bootst ...
- 微信小程序(二)
创建项目: hello.wxml hello world 每个学习的开始 <view>hello world!</view> hello.js 像 app.js 一样 Page ...
- 论文解读(Line)《LINE: Large-scale Information Network Embedding》
论文题目:<LINE: Large-scale Information Network Embedding>发表时间: KDD 2015论文作者: Jian Tang, Meng Qu ...