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对象方法的更多相关文章

  1. Django Auth模块及User对象方法

    一:Django的用户认证 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1:authenticat ...

  2. 层级目录结构的Makefile递归编译方法

    层级目录结构的Makefile编写方法. 层级目录结构的Makefile编写方法. 0.前言 1.如何编译整个工程 2.过滤每层不需要编译的目录 3将所有输出文件定向输出. 0.前言 假如现在有这样一 ...

  3. Django工程目录结构优化

    1.我看到这篇文章,写的不错,在此复制了一份,防止以后找不到! 感谢作者的翻译--->原文的链接:http://www.loonapp.com/blog/11/ 如果原文存在,请打开原文件阅读 ...

  4. Django 基本使用及目录结构

    1.安装 pip3 install django 默认为最新版 2.创建Django项目 在即将创建的Django项目,目录下运行命令 1.django-admin startproject my_p ...

  5. [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]

    [Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...

  6. HttpResponse,render,redirect,静态文件配置,request对象方法,pycharm连接MySQL,django连接MySQL,django ORM

    HttpResponse 主要用于返回字符串类型的数据 def index(request): return HttpResponse('index页面') 在页面中就会显示 index页面 rend ...

  7. django三板斧与request对象方法与ORM

    目录 django三板斧 HttpResponse() render() redirect() 网页获取静态文件样式 request对象方法 post请求问题 针对get请求和post请求执行不同代码 ...

  8. Django 创建 APP和目录结构介绍

    一.通过pip安装Django 以windows 系统中使用pip命令安装为例 win+r,调出cmd,运行命令:pip install django自动安装PyPi 提供的最新版本.指定版本,可使用 ...

  9. 二十一、【.Net开源框架】EFW框架Web前端开发之目录结构和使用FireBug调试方法

    回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan.baidu. ...

随机推荐

  1. 整数中1出现的次数 牛客网 剑指Offer

    整数中1出现的次数 牛客网 剑指Offer 题目描述 求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此 ...

  2. Python ImportError: No module named '_tkinter', please install the python3-tk package

    ImportError: No module named '_tkinter', please install the python3-tk package 这个问题的原因是使用的python3环境内 ...

  3. P2598 [ZJOI2009]狼和羊的故事(最小割)

    P2598 [ZJOI2009]狼和羊的故事 说真的,要多练练网络流的题了,这么简单的网络流就看不出来... 题目要求我们要求将狼和羊分开,也就是最小割,(等等什么逻辑...头大....) 我们这样想 ...

  4. 虚拟机克隆后修改mac地址和ip地址

    (1)虚拟机克隆在新的虚拟机下会有文件产生变化. /etc/udev/rules.d/70-persistent-net.rules  文件中会多一个eth1 网卡的文件 ,eth0 的那行文件是原虚 ...

  5. 基于 OSPF 路由的邻居邻接关系发现实践

    1.实验目的 理解 OSPF 邻居关系和 OSPF 邻接关系的含义及差别 观察 OSPF 邻居邻接关系的建立过程 观察 OSPF 链路状态数据库的同步过程 2.实验原理 OSPF 网络中,路由器在发送 ...

  6. The art of multipropcessor programming 读书笔记-3. 自旋锁与争用(2)

    本系列是 The art of multipropcessor programming 的读书笔记,在原版图书的基础上,结合 OpenJDK 11 以上的版本的代码进行理解和实现.并根据个人的查资料以 ...

  7. scrapy获取汽车之家数据

    1.创建scrapy项目 >scrapy startproject scrapy_carhome 2.找到对应接口 3.创建爬虫文件 > cd scrapy_carhome\scrapy_ ...

  8. [luogu3334]抛硬币

    (数据范围的公式渲染有一些问题,大概是$a\le b\le 100$) 同洛谷4548,推导过程省略,直接给出答案-- 令$p_{H}=\frac{b}{a}$,$p_{T}=\frac{b}{b-a ...

  9. 『学了就忘』Linux用户管理 — 50、用户管理相关文件详细说明

    目录 1.用户信息文件 2./etc/shadow影子文件 3./etc/group 组信息文件 4.组密码文件 5.用户的家目录 6.用户邮箱目录 7.用户模板目录 总结: 提示:严格的用户权限划分 ...

  10. SpringCloud升级之路2020.0.x版-43.为何 SpringCloudGateway 中会有链路信息丢失

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 在开始编写我们自己的日志 Filter 之前,还有一个问题我想在这里和大家分享,即在 Sp ...