diango使用顺序
使用顺序
settings 静态文件配置
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #文件夹根目录
DEBUG = True #因为启动出错调试模式 上线后改为Flase,出错不报错,给用户更好的用户体验
ALLOWED_HOSTS = ['*'] #让所有的用户可以访问
INSTALLED_APPS = [ #app注册
'app01',
'app01.apps.App01Config' # 推荐写法
]
MIDDLEWARE = [
# 'django.middleware.csrf.CsrfViewMiddleware', #提交POST请求注释一个中间件
]
"""
如果使用sqlite3数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
"""
"""
#如果使用mysql数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #diango的服务器引擎
'NAME': 'bookmanager',
'USER': 'root',
'PASSWORD': '123',
'HOST': '127.0.0.1',
'PORT': 3306,
}
}
#默认使用pymysql模块 替换
import pymysql
pymysql.install_as_MySQLdb()
"""
LANGUAGE_CODE = 'en-us' #汉语 'zh-hans'
TIME_ZONE = 'UTC' #时区:英国的,改为亚洲上海 'Asia/Shanghai'
STATIC_URL = '/static/' #静态文件夹的别名,配置静态文件要以/static/为开头
STATICFILES_DIRS = [ # 路由
os.path.join(BASE_DIR,'static1'), # 存放静态文件的路径
os.path.join(BASE_DIR,'static1'),
]
# join(BASE_DIR必须是这个,静态文件夹static1)
# 加上静态文件的存放路径
models.py 映射关系
写映射关系操作数据库
settings 配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #使用mysql数据库引擎
'NAME': 'day43', #默认操作的库
'HOST': '127.0.0.1', #库所在的服务器地址
'PORT': 3306, #端口
'USER': 'root', #用户名
'PASSWORD': '123', #密登密码
}
}
#默认使用pymysql模块 替换 也可以写在day43的__init__.py里
import pymysql
pymysql.install_as_MySQLdb()
创库
用可视化工具创建一个MySQL数据库
创表
class User(models.Model):
username = models.CharField(max_length=32) # varchar(32)
password = models.CharField(max_length=32) # varchar(32)
#类 对象 属性
#表 数据行 字段
python manage.py makemigrations # 制作迁移文件 出现在migrations
python manage.py migrate # 执行SQL语句 同步
#terminal里执行命令
△id字段是自动添加的,如果你想要指定自定义主键,只需在其中一个字段中指定 primary_key=True 即可。如果Django发现你已经明确地设置了Field.primary_key,它将不会添加自动ID列。
urls.py 路由
路径 函数转换
==settings配置:
STATICFILES_DIRS = [ # 路由
os.path.join(BASE_DIR,'static1'), # 存放静态文件的路径
os.path.join(BASE_DIR,'static2'),
]
url(r^'用户输入输入的路径 0.0.0.0:80/index/',不加括号的函数名)
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', index), # 路径和函数的对应关系,
url(r'^modal/', modal),
]
views.py 函数
def index(request): # 函数里写处理逻辑,request拿到网络路径,固定写法
print(request.path_info) # 打印网络路
import 导入:
导入返回字符串的包HttpResponse,返回html文件的包render,返回执行另一个逻辑的包
from django.shortcuts import HttpResponse,render, redirect
导入dpp01文件中的创建数据表的类的models.py文件
from app01 import models
return 返回:
return HttpResponse('
index
')
返回字符串
return HttpResponse('<h1>index</h1>') # 返回字符串
return render(,,)
返回接受到请求的网络路径要渲染的html文件和要传的值
return render(request, 'index.html',{'k1':v1})
#返回 (网络路径必添,要渲染的html文件,{别名:要传的值})
return redirecct('路径')
执行另一个逻辑
ORM的操作
写函数来实现增删该查
.all 获取所有的数据
all_publishers = models.Publisher.objects.all()
#变量 = 文件名.类名.对象.取值方法
# objects.all() 查询出所有的出版社的信息,是一个对象列表
.filter(pk=pk) 获取所一个数据
第一个pk列名,第二个pk为从request中get到的
变量 = models.User.objects.filter(password='dsb') # 对象列表
# 用.first取第一个,若无,返回空列表,if 变量;判断时,不会报错,只是不会执行这个语句了
# 用[0]取值时,,若无,取不到值,if 判断时变量,会报错
get 获取所一个数据
变量 = models.User.objects.get(password='dsb') # 对象 特点 获取不到或者获取到多个都报错
create(name=pub_name) 添加数据
利用类的对象
obj = models.Publisher.objects.create(name=pub_name)
update(name=pub_name) 跟新数据
templates HTML文件
模板
某.html的settings配置
MIDDLEWARE = [
# 'django.middleware.csrf.CsrfViewMiddleware', #提交POST请求注释一个中间件
]
hyml中的样式路径配置
<head>
<title>Title</title>
<link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/bootstrap.min.css">
<link rel="stylesheet" href="/static/plugins/font-awesome-4.7.0/css/font-awesome.min.css">
<script src="/static/js/jquery.js"></script>
<script src="/static/plugins/bootstrap-3.3.7-dist/js/bootstrap.js"></script>
</head>
模板语法
△登录
<div class="container">
<form class="form-signin" method="post" action="" novalidate>
<h2 class="form-signin-heading">Please sign in</h2>
<label for="inputEmail" class="sr-only">用户名</label>
<input type="text" id="inputEmail" class="form-control" name="username" placeholder="输入用户名" required=""
autofocus="">
<label for="inputPassword" class="sr-only">密码</label>
<input type="password" id="inputPassword" class="form-control" name="password" placeholder="输入密码" required="">
<div>{{ error }}</div>
<div class="checkbox">
<label>
<input type="checkbox" value="remember-me"> Remember me
</label>
</div>
<button class="btn btn-lg btn-primary btn-block">登录</button>
</form>
△查询所有的作者信息
all_authors = models.Author.objects.all()
for author in all_authors:
print(author)
print(author.name)
print(author.books,type(author.books)) # 关系管理对象
print(author.books.all(),type(author.books.all())) # 所关联的所有的对象
△for循环
views.py传过来的参数:
render(request,'pub.html',{'all_publishers':all_publishers})
{{ all_publishers }}
html的for循环:
{% for i in all_publishers %}
{{ forloop.counter }}
{{ i }}
{{ i.id }} {{ i.pk }}
{{ i.name }}
{% endfor %}
△if
{% if 条件 %}
xxx
{% else %}
xxxxx
{% endif %}
△form的注意点
- form标签的属性 action='提交的地址' method='post' novalidate 取消input标签自带的校验
- input标签必须要有name属性 有些标签有value值
- 需要有一个button按钮 或者 type='submit'的input
△get 和 post
get : 获取一个页面
1.直接在浏览器的地址栏中输入地址 回车
2.form表单 不指定method
3.a标签
参数: ?k1=v1&k2=v2
获取参数: request.GET.get('k1')
post : 提交数据
form表单 method = 'post'
获取数据: request.POST.get('k1')
static1 渲染
diango使用顺序的更多相关文章
- Diango路由控制
路由的格式: #路由配置的格式: urls.py里面写 from diango.conf.urls import url urlpatterns = [ url(正则表达式,views视图函数,nam ...
- diango入门(持续更新中)
学习注意点:理顺项目逻辑,记住重点,项目做好重点注释保留好,以后做项目了能知道这样可以实现,忘了回来查 下载 命令行 pip install django==1.11.26 -i https://py ...
- 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
- 【每日一linux命令3】参数(或称选项)顺序
一般除了特殊情况,参数是没有顺序的.举例而言,输入"–a –v"与输入"–v –a"以及"–av" 的执行效果是相同的.但若该参数后指定了要 ...
- 由Dapper QueryMultiple 返回数据的问题得出==》Dapper QueryMultiple并不会帮我们识别多个返回值的顺序
异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#dapper 今天帮群友整理Dapper基础教程的时候手脚快了点,然后遇到了一个小问题,Dapp ...
- 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找
今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...
- 从阿里巴巴笔试题看Java加载顺序
一.阿里巴巴笔试题: public class T implements Cloneable { public static int k = 0; public static T t1 = new T ...
- MFC中成员变量的声明顺序与析构顺序
第一次用博客,第一篇随笔,就写今天遇到的一个问题吧. 在VS2008的MFC对话框程序,窗口成员变量的声明顺序与其析构顺序相反,即,先声明的变量后析构,后声明的变量先析构.未在其他模式下测试. cla ...
- 【每日一linux命令2】命令执行顺序:
二.命令顺序: 若在 shell 内置的命令/bin 以及/usr/bin 之下都出现了命令 pwd,那当我们执行该命令时,会执行哪 一个?答案是第一优先执行 shell 内置的命令,再执行路 ...
随机推荐
- 移动开发在路上-- IOS移动开发系列 多线程三
这一次说一点概念性的东西,也是为后边做一些基础 HTTP协议的基本概念 http协议的基本概念 全称“超文本传输协议”,浏览器和服务器之间的通信规则 HTTp协议永远都是客户端发起的请求,服务器回送响 ...
- 尺取法two pointers
目的:对给定的一个序列,在序列中寻找包含全部需求的.长度最小的一段子序列.一般用来解决具有单调性的区间问题. 时间复杂度:O(n) https://blog.csdn.net/lxt_lucia/ar ...
- ARTS-S c++调用pytorch接口
想跑通第1个参考资料上讲的例子,一定要注意gcc和gperftools的版本.因为LibTorch用了c++17的over-aligned新特性. centos默认的gcc是4.8.5不支持这个新特性 ...
- 【Web技术】337- 秒懂 Web 缓存
点击上方"前端自习课"关注,学习起来~ 最近把前端缓存重新整理了一下,从整体的层面上把前端所有能用的缓存方案梳理了一遍.同时,对于http缓存,使用了表格的方案,使得原先晦涩难记的 ...
- JMeter之SteppingShape
1.背景 其实是这样的,最近包括以前都有同事问过宝路一个问题:JMeter测试计划中涉及到梯度压测时,整个测试计划执行完毕,聚合报告看的是整体的结果啊!并不能直观看到每个梯度下的吞吐量的值(虽然可以通 ...
- JS基础-DOM
DOM DOM 事件的级别 DOM 事件模型 DOM 事件流 DOM 事件捕获的具体流程 Event 对象的常见应用 自定义事件 DOM概述 | MDN DOM | MDN DOM操作 DOM事件级别 ...
- 201871010119-帖佼佼《面向对象程序设计(java)》第六—七周学习总结
博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...
- jQuery实现简单购物车页面
功能描述: 当全选按钮被按下时,所有商品的小复选框(以及另外一个全选按钮)的选中状态跟按下的全选按钮保持一致: 当用户选中商品时,如果所有商品都被选中,就让全选按钮为选中状态: 用户可以点击 + - ...
- VUE项目Eslint报错
前言:eslint很恶心的一个地方:你是否被各种语法报错一个标点符号,一个空格,一个回车......各种报错折磨着你! 加上编辑器 VS Code 的自动格式化稳稳的和Eslint冲突报错. 对此,我 ...
- SAP QA32试图做UD,系统报错-工厂 BTYC中的 QM 基选设置需要维护
SAP QA32 试图做UD,系统报错 - 工厂 BTYC 中的 QM 基选设置需要维护 - 检验批 10000062593,试图做使用决策,系统报错, 工厂 BTYC 中的 QM 基选设置需要维护 ...