1、登录功能,连接MySQL
1、1 路由
url( r'^login' , views2. login) ,
url( r'^index' , views2. index) ,
url( r'^test' , views. test) ,
1、2 视图函数
def index ( request) :
return render( request, 'index.html' )
def login ( request) :
if request. method == 'GET' :
return render( request, 'login.html' )
else :
name = request. POST. get( 'name' )
password = request. POST. get( 'password' )
conn = pymysql. connet(
post = '127.0.0.1' ,
user = 'root' ,
password = '1' ,
db = 'userinfo' ,
post = 3306 ,
)
cursor = conn. cursor( cursor= pymysql. cursor. DictCursor)
row = cursor. execute( 'select * from user where name=%s and password=%s' , ( name, password) )
res = cursor. fetchone( )
if res:
return render( '/index' )
else :
return HttpResponse( '用户名或密码错误' )
1、3 模板文件login
<!DOCTYPE html>
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< link rel = " stylesheet" href = " /static/bootstrap/css/bootstrap.css" >
< title> Title</ title>
</ head>
< body>
< div class = " row" >
< div class = " col-md-6 col-md-offset-3" >
< h1 class = " text-center" > 登录功能</ h1>
< form action = " " method = " post" >
< div class = " form-group" >
< label for = " " > 用户名:</ label>
< input type = " text" name = " name" class = " form-control" >
</ div>
< div class = " form-group" >
< label for = " " > 密码:</ label>
< input type = " password" name = " password" class = " form-control" >
</ div>
< div class = " text-center" >
< input type = " submit" value = " 登录" class = " btn btn-success" >
</ div>
</ form>
</ div>
</ div>
</ body>
</ html>
1、5 模板文件index
<!DOCTYPE html>
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< link rel = " stylesheet" href = " /static/bootstrap/css/bootstrap.css" >
< script src = " /static/js/jquery.min.js" > </ script>
< title> 首页</ title>
</ head>
< body>
< nav class = " navbar navbar-inverse navbar-fixed-top" >
< div class = " container" >
< div class = " navbar-header" >
< button type = " button" class = " navbar-toggle collapsed" data-toggle = " collapse" data-target = " #navbar" aria-expanded = " false" aria-controls = " navbar" >
< span class = " sr-only" > 导航</ span>
< span class = " icon-bar" > </ span>
< span class = " icon-bar" > </ span>
< span class = " icon-bar" > </ span>
</ button>
< a class = " navbar-brand" href = " #" > Project name</ a>
</ div>
< div id = " navbar" class = " navbar-collapse collapse" >
< form class = " navbar-form navbar-right" >
< div class = " form-group" >
< input type = " text" placeholder = " Email" class = " form-control" >
</ div>
< div class = " form-group" >
< input type = " password" placeholder = " Password" class = " form-control" >
</ div>
< button type = " submit" class = " btn btn-success" > Sign in</ button>
</ form>
</ div>
</ div>
</ nav>
< div class = " jumbotron" >
< div class = " container" >
< h1> 小老虎</ h1>
< p> 同城交友</ p>
< p> < a class = " btn btn-primary btn-lg" href = " #" role = " button" > 疯狂点击我</ a> </ p>
</ div>
</ div>
< div class = " container" >
< div class = " row" >
< div class = " col-md-4" >
< h2> Heading</ h2>
< p> Donec</ p>
< p> < a class = " btn btn-default" href = " #" role = " button" > View details »</ a> </ p>
</ div>
< div class = " col-md-4" >
< h2> Heading</ h2>
< p> Donec </ p>
< p> < a class = " btn btn-default" href = " #" role = " button" > View details »</ a> </ p>
</ div>
< div class = " col-md-4" >
< h2> Heading</ h2>
< p> Donec .</ p>
< p> < a class = " btn btn-default" href = " #" role = " button" > View details »</ a> </ p>
</ div>
</ div>
< hr>
< footer>
< p> © 2020 Company, Inc.</ p>
</ footer>
</ div>
</ body>
</ html>
2、MTV和MVC
1 django 是MTV架构,本质也是mvc
- M:model,数据库相关操作
- T:template,模板文件(就是mvc的v层)
- V:view,视图(urls+ view= MVC的控制器)
2 MVC架构:主流的web框架都是mvc
- Web应用分为模型( M) ,控制器( C) 和视图( V)
- M:model,数据库相关操作
- C:controler控制器,逻辑相关,逻辑代码
- V:视图,模板文件
3、Django的生命请求周期
0 近几年python中的几个web框架,sanic,fastapi(异步框架)
1 python中的web服务器都符合wsgi协议
2 web服务器,任何语言都会有一个web服务器,负责把http请求转成这门语言的变量
- python:wsgiref(性能很低),uwsgi(C语言写的),200 多并发量
- java:tomcat,jboss(300 多并发了)
- php:php服务器
3、虚拟环境配置
1 虚拟环境作用:隔离项目,每个项目有自己依赖的模块和包,不同模块和包的版本就不会相
互影响
2 pycharm中配置虚拟环境
5、ORM概述
1 orm: 对象关系映射(跟语言无关)
数据库中的表 - - - - 》对应程序的一个类
数据库中的一行数据- - - - 》对应程序中的一个对象
2 python中常见orm框架
- django的orm框架
- sqlachemy orm框架
3 java:(扩展),java中写web项目
ssh框架 :spring+ struts(有漏洞)+ hibernate(orm框架)
ssm框架:spring+ springmvc+ mybatis(orm框架,可以写原生sql)
springboot:sb框架 ,tomcat内置进去了
springcloud:微服务
4 orm能干的事
- 创建表(不能创建数据库,手动创建数据库)
- 增加删除表内字段
- 增删查改数据
6、Django中orm的使用
0 sqlite:也是一个数据库,文件数据库,一个库就是一个文件,不需要单独安装
- 现在在用,也要用到关系型数据库,不想装mysql,就可以使用sqlite
- 移动开发本地存储数据,存在sqlite中
1 创建个UserInfo表,在models中写一个类
2 表中有字段(类属性),字段有属性,
class UserInfo ( models. Model) :
id = models. AutoField( primary_key= True )
name = models. CharField( max_length= 32 )
password = models. CharField( max_length= 64 , null= True )
gender= models. IntegerField( default= 0 )
province= models. CharField( max_length= 32 , null= True )
- python3 manage. py makemigrations
- python3 manage. py migrate