第十八章 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. 转发:python 装饰器--这篇文章讲的通俗易懂

    转 http://www.cnblogs.com/wupeiqi/articles/4980620.html 1.必备 #### 第一波 #### def foo():     print 'foo' ...

  2. JavaSE-反射-获取类或者对象的四种方法

    1.使用Class类的静态方法Class.forName("xxxx"); 新建一个要想要获取的类 package org.burning.sport.javase.classlo ...

  3. CSS深入理解学习笔记之float

    1.float的历史 float设计的初衷仅仅是为了文字环绕效果. 示例代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...

  4. WebSphere--部署Servlet

    在WebSphere应用服务器上部署 Servlet需要四个步骤:编译 Servlet 或 Web 应用程序.将类文件放到 WebSphere应用服务器上.将相关的 HTML.JSP 和 SHTML ...

  5. 一、Html简介

    html什么东西呢? hypertext markup language(超文本标记语言).超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准, 它通过标记符号来标记要显示的网页中 ...

  6. linkin大话面向对象--java关键字

    java中的关键字有以下几个,他们不能作任何其它的用途. 发现没,java中的关键字全是小写,java是严格区分大小写的. abstract  default  null  synchronized ...

  7. php 通过curl获取远程数据,返回的是一个数组型的字符串,高手帮忙如何将这个数组类型的字符串变成数组。

    如 Array([0] => Array([0] => Array([kd_status] => 已签收[kd_time] => 2014-04-30 18:59:43 [b] ...

  8. Event Sourcing pattern

    Event Sourcing pattern Instead of storing just the current state of the data in a domain, use an app ...

  9. JVM的内存分区

    JVM的内存分区 这篇文章尝试讨论清楚JVM的内存分区情况. 1.       JVM的内存和系统内存的关系 下图是对系统内存及JVM内存的大致描绘 对大多数操作系统,内存可以分为物理内存RAM及Sw ...

  10. 纯静态界面中(html)中通过js调用dll中的方法从数据库中读取数据

    最近接到一个离职员工的任务,一个搭好框架的ERP系统,看了两天,说一下看到的东西,整个项目目录中我没发现一个.aspx后缀的文件,全是静态HTML文件,之后发现他用的jquery简直看的头疼,不过大概 ...