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. 手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序

    上一篇:手把手教你学Dapr - 2. 必须知道的概念 注意: 文章中提到的命令行工具即是Windows Terminal/PowerShell/cmd其中的一个,推荐使用Windows Termin ...

  2. VCS常用仿真选项开关及步骤总结

    转自:https://blog.csdn.net/bcs_01/article/details/79803304 转自:https://blog.csdn.net/wonder_coole/artic ...

  3. cf14C Four Segments(计算几何)

    题意: 给四个线段(两个端点的坐标). 判断这四个线段能否构成一个矩形.(矩形的四条边都平行于X轴或Y轴) 思路: 计算几何 代码: class Point{ public: int x,y; voi ...

  4. Shadertoy 教程 Part 5 - 运用SDF绘制出更多的2D图形

    Note: This series blog was translated from Nathan Vaughn's Shaders Language Tutorial and has been au ...

  5. js this指向汇总

    this指向 普通函数  window 定时器函数         window 事件函数 事件源 箭头函数 父function中的this,没有就是window 对象函数 对象本身 构造函数 实例化 ...

  6. Python-爬取CVE漏洞库👻

    Python-爬取CVE漏洞库 最近吧准备复现一下近几年的漏洞,一个一个的去找太麻烦了.今天做到第几页后面过几天再来可能就不记得了.所以我想这搞个爬虫给他爬下来做个excel表格,那就清楚多了.奈何还 ...

  7. 亚马逊开发者用户授权 AWS

    在开发之前最好的方法是先拿到官网的API文档简单的预览一遍 这里有个中文文档:AWS 开发中文文档 需要准备: 注册成为开发者 创建 AWS 账户 创建 IAM 用户 创建 IAM 策略 创建 IAM ...

  8. 体验webhooks

    一.webhooks是什么 webhooks是一种实现在web api跟web service之间的发布订阅的轻量级的模式:当服务中心某个事件发生的时候,就会向订阅者发送一个POST请求形式的通知,这 ...

  9. python datetime 增减以月为单位的时间段

    datetime.timedelta(days=10)  # 可以 datetime.timedelta(months=1)   # 不可以 替代: from datetime import date ...

  10. mybatis插入数据时处理为null的属性

    在做项目的时候,数据库中的所有字段被设置为全都不能为null,但是在我们开发过程中,插入一些记录的时候,实体类中的一些字段如果页面没有传入,则默认就会被设置为null,这样的话,在执行插入语句的时候, ...