第十八章 DjangoWeb开发框架
第一课 内容概要:
1.JS正则
-登录注册验证
2.组件
1.BootStrap
-css
-js
学习BootStrap规则
2.jQueryUI
-css
-js
学习jQueryUI规则
3.EasyUI
-css
-js
学习EasyUI规则
3.Web框架
4.Django(python功能最齐全的Web框架)

第二课 JS正则
1.test -判断字符串是否符合规定的正则
req=/\d+/;
req.test('adsfjogan66dfsa')
#ture
2.exec -获取匹配的数据
req=/\d+/
req.exec('adsfjogan66dfsa')
#["66", index: 9, input: "adsfjogan66dfsa"]
代码(浏览器控制台Console):
text='javascript is more fun than java or javabeans!'

var pattern=/\bjava\w*\b/;
pattern.exec(text);
#["javascript",]

var pattern=/\bjava(\w*)\b/;
pattern.exec(text);
#["javascript", "script"]

var pattern=/\bjava(\w*)\b/g;
pattern.exec(text);
#["javascript", "script"]
pattern.exec(text);
#["java", ""]
pattern.exec(text);
#["javabeans", "beans"]
pattern.exec(text);
#null
-登录注册验证(前端):

第三课 组件
EasyUI:
1.百度搜索EasyUI
2.导入jQuery和EasyUI到项目目录下
3.从EasyUI网站上挑选demo代码,进行复制
4.新建Html文件,将demo代码粘贴
5.将link路径:"https://www.jeasyui.com/easyui/themes/icon.css"
改为本地路径:"jquery-easyui-1.5.3/themes/default/easyui.css"
6.将<script>中的srcl路径,也改为本地的。
7.运行即可看到效果。
jQueryUI:
用法与EasyUI一样,由于集成度低,并没有得到广泛使用。
BootStrap:
最流行的组件,拥有很多模板。
1.响应式:基于@media
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.c1{
background-color: red;
height: 40px;
}
@media (min-width: 700px) { //宽度最小700px的情况下执行
.c2{
background-color: blue;
height: 40px;
}
}
</style>
</head>
<body>
<div class="c1 c2"></div>
</body>
</html>
2.图标 字体:基于@font-face
3.基本使用:
1.下载BootStrap,并引入项目中
2.新建Html文件,引入BootStrap的css路径:
<link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap.css">
<link rel="stylesheet" href="bootstrap-3.3.7-dist/css/bootstrap-theme.css">

3.引入jQuery,再引入BootStrap的js路径:
<script src="jquery-3.2.1.js"></script>
<script src="bootstrap-3.3.7-dist/js/bootstrap.js"></script>
4.到BootStrap官网找到对应版本的示例,挑选需要功能赋值代码即可使用。
5.如果需要对示例中的组件进行修改,就在自定义的属性后面加上:!import
由此可见,在我们需要写一些前端功能的时候,比如轮播图,应该先去网上搜一下
看有没有相关插件,直接拿来使用,可以避免反复造轮子,提高工作效率。

第四课 Web框架
所有的web框架的本质:
import socket
def handle_request(client):
buf=client.recv(1024)
client.send(bytes('HTTP:/1.1 200 OK\r\n\r\n',encoding='utf8'))
client.send(bytes('Hello World!',encoding='utf8'))
def main():
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(('127.0.0.1',8000))
sock.listen(5)
while True:
conn,address=sock.accept()
handle_request(conn)
conn.close()
if __name__ == '__main__':
main()
python中最基本的web框架:wsgiref模块(pyhton中web框架的本质)
from wsgiref.simple_server import make_server
def RunSever(environ,start_response):
# environ 用户发来的所有的数据
# start_response 封装要返回给用户的数据:响应头
start_response('200 OK',[('Content-Type','text/html')])
return ['hello world!'.encode('utf8')]# 返回的内容
if __name__ == '__main__':
httpd=make_server('',8000,RunSever)
print('Serving HTTP on port 8000...')
httpd.serve_forever()
字符串转字节的三种方式:
1.b'ffffff' (不能用于中文)
2.bytes('ffffff',encoding='utf8')
3.'ffffff'.encode('utf8')
MVC:
Model:数据库 View:模板文件 Controller:业务处理
MTV:(Django)
Model:数据库 Template:模板文件 view:业务处理

第五课 Django
Django目录:
mysite
-mysite #对整个程序进行配置
-init
-settings #配置文件
-urls #URL对应关系
-wsgi #遵循WSGI规范 以后会改用uwsgi+nginx
-manage.py #管理Django程序:
-python manage.py
-python manage.py startapp xxx
-pyhton manage.py makemigrations
-python manage.py migrate
创建app:
chouti
-主站 app
-后台管理 app
命令:
python3 manage.py startapp app名
app目录:
-migrations #数据操作记录
-admin #Django为我们提供的后台管理
-apps #配置当前app的(暂时用不到)
-models #ORM,写指定的类,通过命令可以创建数据库结构
-tests #单元测试

-views #业务代码
Django实现用户登录:
1.创建app名为cmdb(自定义随便起)
2.将medb名加入settings中的INSTALLED_APPS列表中
3.在urls文件中引入app下的views模块:
from cmdb import views
4.在urlpatterns列表中加入路径与关联函数:
path('login',views.login)
5.在Templates中新建一个Html文件login.html
<form action="/login" method="post">
<p>
<label for="uesername">用户名</label>
<input type="text" id="username" name="username">
</p>
<p>
<label for="pwd">密码</label>
<input type="password" id="pwd" name="pwd">
<span style="color: red">{{ 'error' }}</span>
</p>
<p>
<input type="submit" value="提交">
</p>
</form>
6.到views中创建login函数:
def login(req):
return render(req,'login01.html')
7.在settings中的TEMPLATES列表中的 'DIRS'加入模板路径:
'DIRS': [os.path.join(BASE_DIR, 'templates')],
8.在项目文件夹下,为静态文件创建文件夹:static 导入css文件和js文件
9.配置静态文件路径,在settings中的最后加代码:
STATICFILES_DIRS=(os.path.join(BASE_DIR, 'static'),) #千万不要忘了加,

10.访问127.0.0.1:8000来到登录界面,点提交时会报403错误
11.将settings文件中的MIDDLEWARE内的第四行暂时注释掉,就不会有403错误了
12.用户验证:
将views代码修改为:
from django.shortcuts import render,redirect
# Create your views here.
def login(req):
error_msg=''
if req.method=='POST':#获取用户的提交方式
user=req.POST.get('username')#用get的方式获取键值,防止有空值报错
pwd=req.POST.get('pwd')
if user=='root' and pwd=='123':
return redirect('http://www.baidu.com')
else:
error_msg='用户名或密码不匹配'
return render(req,'login01.html',{'error':error_msg})
13.登录界面输入用户名:root 密码:123 点击提交,就跳转到了百度
用户名和密码如果有错误,就会提示:用户名或密码不匹配

实现前后端交互:
1.在Templates中新建一个Html文件home,写入代码:
<form action="home" method="post">
<input type="text" name="name" placeholder="姓名">
<input type="text" name="sex" placeholder="性别">
<input type="text" name="email" placeholder="邮箱">
<input type="submit" value="添加">
</form>
<div>
<table>
{% for row in userlist %}
<tr>
<td>{{ row.name }}</td>
<td>{{ row.sex }}</td>
<td>{{ row.email }}</td>
</tr>
{% endfor %}
</table>
</div>
2.在urlpatterns列表中加入路径与关联函数: path('home',views.home),
3.在views中加入代码:
userlist=[
{'name':'张三','sex':'男','email':'1110@163.com'},
{'name':'李四','sex':'男','email':'2220@163.com'},
{'name':'王五','sex':'男','email':'3333@163.com'},
]
def home(req):
if req.method=='POST':
user=req.POST.get('name')
sex=req.POST.get('sex')
email=req.POST.get('email')
temp={'name':user,'sex':sex,'email':email}
userlist.append(temp)
return render(req,'home.html',{'userlist':userlist})
4.访问127.0.0.1:8000/home 可以实现条件用户信息的功能

第六课 内容整理:
1.创建Django工程:
django-admin startproject 工程名
2.创建App:
cd 工程名
python manage.py startapp app名
3.静态文件:
project.settings.py
STATICFILES_DIRS=(
os.path.join(BASE_DIR,'static'),
)
4.模板路径:
DIRS==>[os.path.join(BASE_DIR,'Template'),]
5.settings
middlerware
#注释csrf
6.定义路由规则:
urls.py
'login'-->函数名
7.定义视图函数:
app下的views.py
def func(req):
#req.method GET / POST
#http://127.0.0.1:8000/home?nid=123&name=alex....
#req.GET.get('',None) #获取请求发来的数据
#req.POST.get('',None)

#return HttpResponse('字符串')
#return render(req,'HTML模板路径')
#return redirect('/只能填url’)
8.模板渲染:
特殊的模板语言:
---{{变量名}}:

def func(req):
return render(req,'index.html',{'current_user'='张三'})

index.html
<html>
...
<body>
<div>{{current_user}}</div>
</body>
</html>
=====>最后生成的字符串:
<html>
...
<body>
<div>张三</div>
</body>
</html>

----for循环:
def func(req):
return render(req,'index.html',{'current_user'=['张三','李四','王五','小明']})

index.html
<html>
...
<body>
<ul>
{%for i in current_user%}
<li>{{i}}</li>
{{%endfor%}}
</ul>
</body>
</html>
----if else 可以与for循环配合使用,也可以嵌套。
{% if 条件%}
...
{%else%}
...
{%endif%}

第十八章 DjangoWeb开发框架的更多相关文章

  1. 《Linux内核设计与实现》读书笔记 第十八章 调试

    第十八章调试 18.1 准备开始          需要准备的东西: l  一个bug:大部分bug通常都不是行为可靠而且定义明确的 l  一个藏匿bug的内核版本:找出bug首先出现的版本 l  相 ...

  2. Python之路【第十八章】:Django基础

    Django基本配置 Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Se ...

  3. 《Linux内核设计与实现》课本第十八章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第十八章自学笔记 By20135203齐岳 通过打印来调试 printk()是内核提供的格式化打印函数,除了和C库提供的printf()函数功能相同外还有一 ...

  4. 《Linux命令行与shell脚本编程大全》 第十八章 学习笔记

    第十八章:初识sed和gawk 文本处理 sed编辑器 sed编辑器可以基于输入到命令行的或是存储在命令文本文件中的命令来处理数据流中的数据. 它每次读取一行,用提供的编辑器命令匹配数据.按命令中指定 ...

  5. Gradle 1.12用户指南翻译——第四十八章. Wrapper 插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  6. Gradle 1.12 翻译——第十八章. 日志

    有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...

  7. Gradle 1.12用户指南翻译——第二十八章. Jetty 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  8. Gradle 1.12用户指南翻译——第三十八章. Eclipse 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  9. 《linux内核设计与实现》第十八章

    第十八章 调试 调试工作艰难是内核级开发区别于用户级开发的一个显著特点. 一.准备开始 1.内和调试需要什么 一个bug(大部分bug通常都不是行为可靠而且定义明确的) 一个藏匿bug的内核版本(知道 ...

随机推荐

  1. PHP数据核心:Zend HashTable详解

    最近看了篇关于php内的hashtable的文章,PHP数据存储的核心,各种常量.变量.函数.类.对象等都用它来组织的.转载地址 http://www.phppan.com/2009/12/zend- ...

  2. JFreeChart绘制折线图实例

    JFreeChart是JAVA平台上的一个开放的第三方图表绘制类库.只要下载JFreeChart的类库,导入项目即可使用.下面是一个绘制折线图的实例.各处注释都已经写的比较清晰了. package c ...

  3. Shell跳板机sshstack

    笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 源码地址: https://github.com/sshstack/sshstack 为什么要写shell跳板机? ...

  4. 【转】利用matlab生成随机数函数

    原文地址:利用matlab生成随机数函数 rand(n):生成0到1之间的n阶随机数方阵  rand(m,n):生成0到1之间的m×n的随机数矩阵 (现成的函数) betarnd:贝塔分布的随机数生成 ...

  5. 【转】Awk 命令学习总结、AWk命令系列学习(linux shell)

    前面的话 学习linux 的同人,都知道linux shell文本处理能力非常强大.有一组强大的文本处理工具:grep,sed,awk . 其中grep 经常用作查找匹配文本.sed用作文本编辑替换. ...

  6. 101490E Charles in Charge

    题目连接 http://codeforces.com/gym/101490 题目大意 你有一张图,每两点之间有一定距离,计算出比最短路大x%之内的路径中最长边的最小值 分析 先跑一遍最短路,然后二分答 ...

  7. Oracle-Linux安装配置python3.6环境

    最近公司更换了linux系统的版本,从Ubuntu改为了oracle linux,相关的Python环境也要重新配置,记录一下基本配置的过程. 相关环境 系统:oracle linux7.3 系统自带 ...

  8. 多线程访问DataTable

    项目中需要读取数据库中的多张表.由于表的数据比较多,串行读取时耗时比较多,所以对程序做了一点优化. 环境 .NET 3.5,SQL Server 2012,Visual Studio 2015 过程 ...

  9. web框架之Django基础

    1. Django的简介 Django是一个由python写成的开放源代码的Web应用框架. Django的目的是使常见的Web开发任务,快速和容易. 2. Django框架的特点 1. 遵循MVC开 ...

  10. ipcs、ipcrm、sysresv、kernel.shmmax

    ipcs.ipcrm.sysresv.kernel.shmmax 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可 ...