Django学习之 - 基础部分
学习记录参考:
讲师博客:http://www.cnblogs.com/wupeiqi/articles/5433893.html
老男孩博客:http://oldboy.blog.51cto.com/
运维平台参考:http://oldboy.blog.51cto.com/2561410/1123127
WEB框架简写与解释
解释:Web应用框架有助于减轻网页开发时共通性活动的工作负荷,例如许多框架提供数据库访问接口、标准样板以及会话管理等,可提升代码的可再用性。
MVC框架 == Model View Controller
数据库 模板文件 业务处理
MTV框架 == Model Template View
数据库 模板文件 业务处理
Django使用的就是MTV框架。
Django
安装:pip3 install django
一个项目的创建和编写步骤如下:
1:创建项目:django-admin startproject mysite
mysite 创建的默认目录和文件
- mysite # 对整个程序进行配置
- init
- settings # 配置文件
- url # URL对应关系
- wsgi # 遵循WSGI规范,uwsgi + nginx 可在线上运行
- manage.py # 管理django程序
- python manage.py
- python manage.py startapp xx # 创建一个app程序,注意每个项目可以单独创建一个APP(资产,配管,私有云等)
- python manage.py makemigrations # 生成数据库
- python manage.py migrate # 生成数据库
启动项目:python manage.py runserver 127.0.0.1:8001
也可以直接通过pycharm创建django站点和app,并且可以直接启动。
2:APP
当创建完项目管理平台后,可以在里面创建项目APP,如:
python manage.py startapp cmdb
python manage.py startapp openstack
APP创建完成后,需要将APP的名称添加到settings中的INSTALLED_APPS内。
APP 内包含:
migrations:记录数据库操作和修改表结构的记录
这里注意:在python3中从文件夹内倒入模块不需要__init__.py,在python2中需要。
admin # Django为我们提供的后台管理
apps # 配置当前APP
models # ROM,写指定的类,通过命令可以创建数据库结构
test # 单元测试
views # 业务逻辑代码
3:静态文件和模板文件的配置
模板文件:
1:在项目内创建templates文件夹
2:将html页面文件放到此文件夹内
3:修改settings中在TEMPLATES修改:'DIRS': [os.path.join(BASE_DIR,'templates')],
4:views中的业务代码就可以直接调用html页面
如:return render(request,'login.html')
静态文件:
1:在项目内创建static文件夹
2:将css,js文件放置到此文件夹内
3:修改settings最后增加
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'), #注意要加逗号
)
4:静态文件在html中的引入:
<link rel="stylesheet" href="/static/commons.css" />
<script src="/static/jquery-1.12.4.min.js"></script>
注意:静态文件夹要用:static
4:注释CSRF,这项在初期配置使用可以先关闭,这个功能是方式XSS跨站脚本功能的。
5:定义路由规则
url.py
'login' --> 函数名
6:定义视图函数
app下views.py
def func(request):
# request.method (GET / POST)
# request.POST.get('',None)
# request.GET.get('',None) GET是根据URL取值,获取请求发来的URL数据
# return HttpResponse('字符串')
# return render(request,'html模板文件路径')
# return redirect('只能填写URL') 这里只能是url,因为是返回给客户,客户要重新访问
7:模板渲染
比如后台函数返回:return render(request,'home.html',{'userinfo':user_info})
前台页面通过变量渲染:<div>{{ userinfo }}</d iv>
特殊的模板语言
-- {{ 变量名 }}
-- {% for item in list %} {{ value }} {% endfor %} 可以进行if嵌套
###索引###
如:return render(request,'home.html',{'current_user':'jack',
'user_list':['jk1','jk2'],
'user_dict':{'k1':'v1','k2':'v2'}})
以上返回值在html中取值方法;
<div>{{ current_user }}
<a> {{ user_list.0 }}</a> 值为列表的获取
<a> {{ user_list.1 }}</a>
<a> {{ user_dict.k1 }}</a> 值为字典的获取
<a> {{ user_dict.k2 }}</a>
####条件##### 支持嵌套
如:return render(request,'home.html',{'current_user':'jack',
'user_list':['jk1','jk2'],
'age': 18,
'user_dict':{'k1':'v1','k2':'v2'}})
条件判断方法:
{% if age %}
<a>为真</a>
{% if age > 16 %}
<a>...</a>
{% endif %}
{% else %}
<a>为假</a>
{% endif%}
实例1:用户登录认证并重定向到新页面见:login,home
url(r'^login',views.login),
url(r'^home',views.home),
view代码如下:
def login(request):
# 获取用户提交的方法
# request 包含了客户端用户发来的所有信息
error_msg = ''
if request.method == 'POST':
# 获取用户通过POST提交过来的数据
# request.POST 方法封装了所有用户发过来的请求
# uname = request.POST['username']
# upwd = request.POST['pwd']
# 最好用get方法获取数据,即使没有也不会报错
uname = request.POST.get('username',None)
upwd = request.POST.get('pwd',None)
if uname == 'root' and upwd == 'root':
# return HttpResponse('登录成功')
return redirect('/home')
elif not uname or not upwd:
error_msg = '用户名密码不允许为空'
else:
# 用户名密码不匹配
error_msg = '用户名或密码错误'
return render(request,'login.html',{'error_msg':error_msg})
Django学习之 - 基础部分的更多相关文章
- Django学习之 - 基础模板语言
模板语言if/else/endif {% if today_is_weekend %} <p>Welcome to the weekend!</p> {% else %} &l ...
- Django学习之 - 基础ORM
ORM操作参考: http://www.cnblogs.com/wupeiqi/articles/5246483.html 1:根据类自动创建数据库表,(类创建文件:models.py) 2:根据类对 ...
- Django学习之 - 基础视图函数
视图:Views 获取用户请求的方法: 1: request.GET 2: request.POST 3: request.FILES # checkbox 等多选文件 4:request.POST. ...
- Django学习之 - 基础路由系统
路由系统:URL 1:一个URL对应一个类或函数: url(r'^register',reg.register) 函数写法 url(r'^cbv',reg.cbv.as_view()) 类写法 2:通 ...
- Django学习系列之Form基础
Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...
- Django学习笔记(基础篇)
Django学习笔记(基础篇):http://www.cnblogs.com/wupeiqi/articles/5237704.html
- Django学习---Web框架及基础知识
Django学习---Web框架 web框架的本质 我们在学socket,我们创建一个socketserver,然后运行起来,有一个client客户端要连接socket服务端,连接上之后,如果两边都没 ...
- django 学习第一天搭建环境
目前django版本是1.10,我学习的基础教材是 Web Development with Django Cookbook, Second Edition 搭建好配置环境 ssh免认证登录 修改一下 ...
- 今天主要推荐一下django学习的网址!
前言:每个月忙碌的头20天后,在上班时间投入到django理论学习的过程中,花了差不多3天时间简单的研究了一下django,着实废了我不少脑细胞. 采用虫师前辈的一张图和话: 如果你把这过程梳理清晰了 ...
随机推荐
- python pandas 中 loc & iloc 用法区别
转自:https://blog.csdn.net/qq_21840201/article/details/80725433 ### 随机生DataFrame 类型数据import pandas as ...
- Android(java)学习笔记184:多媒体之 MediaPlayer使用
MediaPlayer类可用于控制音频/视频文件或流的播放.关于如何使用这个类的方法还可以阅读VideoView类的文档. 1.MediaPlayer 状态图 对播放音频/视频文件和流的控 ...
- 我所理解的MVVM
将UI中的数据适配.交互处理: controller中与UI密切相关的功能: 剥离出来,形成单独的模块: 以增加UI和Controller的灵活性.
- About App Sandbox
沙盒是在受限的安全环境中运行应用程序的一种做法,这种做法是要限制授予应用程序的代码访问权限. 沙盒技术提供对资源的严格控制,沙盒通过限制对内存.系统文件和设置的访问,沙盒可以让企业可通过执行潜在恶意代 ...
- java工作流activiti的步骤
链接:activiti 表名称的解释 工作流从流程定义到创建一个流程实例完成执行步骤(省略bpmn的画法) 工作流的所有操作都是使用流程引擎来进行操作的,流程引擎只是存储流程的过程,而不存储具体的业务 ...
- JetBrains系列产品激活
注册时,在打开的License Activation窗口中选择“License server”,在输入框输入下面的网址: http://idea.codebeta.cn https://s.tuzhi ...
- 光猫&路由器网络配置
前期准备:电脑(工业电脑).网线.光猫.路由器 1.检查连接光猫后能否正常上网:把网线两头的水晶头,一头插在光猫上的千兆口,一头插在电脑(工业电脑)的网口上,看电脑能否正常上网: 可以正常上网:说明光 ...
- vue.js中的表单radio,select,textarea的v-model属性的用法
只要是表单元素,其值已经不会再用value来定义了,但是placeholder还是可以用来设置默认值. section1--input:type="text" type=" ...
- java 数据库
1.数据的概述 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材. 数据是信息的表现形式和载体,可以是符号.文字.数字.语音.图像.视频等.数据和信 ...
- css3新增属性:多列(column)
css3多列能够创建多个列来对文本进行布局,就想报纸那样. 关于多列的相关属性及属性值如下: column-count: number|auto;:指定元素应分为的列数.column-fill: 指定 ...