码迷,mamicode.com
首页 > 其他好文 > 详细

Django框架

时间:2018-01-18 13:26:42      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:数据库   request   sage   lan   oca   替换   value   settings   int   

1.Django框架

版本:1.11

创建:

  django-admin startproject xxx

  cd xxx

  python manage.py startapp app01

  python manage.py runserver 127.0.0.1:8000

2.HTTP请求本质

  1.请求生命周期

    - 网站本质:socket

      服务端(网站):

        1.先启动并监听:80端口

        3.获取请求信息:

           获取请求中的url

           根据url在已经写好的路由关系中进行匹配:

            {

              /login/   login

              /admin/  admin

              }

          请求头

          请求体

          处理请求

          响应内容:

 

      客户端(浏览器)

        http://cnblogs.com/wangmengzhu/

        2.发送请求

          - 连接:www.cnblogs.com:80

          - 发送数据:

              GET请求:请求体为空,传值在url后边?data

              POST请求:通过post可以传值

        3.接收响应内容

          响应头悄悄写到浏览器

          响应体在浏览器上显示

3.Django请求的生命周期

浏览器---wsgi协议---路由系统---视图函数---ORM

4.bootstrap实现用户登陆

5.基于Django的model操作数据库表

  •  创建用户表
models.py
class UserInfo(models.Model): id=models.AutoField(primary_key=True) user=models.CharField(max_length=32) pwd=models.CharField(max_length=64)
settings.py
INSTALLED_APPS = [
‘django.contrib.admin‘,
‘django.contrib.auth‘,
‘django.contrib.contenttypes‘,
‘django.contrib.sessions‘,
‘django.contrib.messages‘,
‘django.contrib.staticfiles‘,
‘app01.apps.App01Config‘,#‘app01‘
]
SQLlite:
应用默认操作
  • 执行命令,创建数据库表  

python manage.py makemigrations

python manage.py migrate

#与数据库的类型一一对应
class UserInfo(models.Model):
    id=models.AutoField(primary_key=True)
    user=models.CharField(max_length=32,null=False,default=‘11‘)
    pwd=models.CharField(max_length=64)
class Department(models.Model):
    id=models.AutoField(primary_key=True)
    title=models.CharField(max_length=32)

  

  •  基于model实现数据查询和用户登陆
    def login(request):
        if request.method==‘GET‘:
            #打开login.html文件
            #找到特殊标记{{msg}}
            #并将第三个特殊标识符替换
            #将替换完毕的字符串发送给用户浏览器
            return render(request,‘login.html‘,{‘msg‘:‘sajlsa‘})
        else:
            username=request.POST.get(‘username‘)
            password=request.POST.get(‘password‘)
            from app01 import models
            user=models.UserInfo.objects.filter(user=username,pwd=password).first()#表示查询这张表的所有数据
            if user:
                #在响应头中设置:locating:http://baidu.com无响应体,当作字符串提交给浏览器
                return redirect(‘/index/‘)
            else:
                return render(request,‘login.html‘,{‘msg‘:‘用户名或者密码错误‘})
    
    def index(request):
        return redirect(‘http://www.baidu.com/‘)
    
    def test(request):
        from app01 import models
        # user_list=models.UserInfo.objects.all()
        # for obj in user_list:
        #     #查询所有用户,相当于select * from userinfo
        #     #每一个obj都是一行数据
        #     print(obj.id)
        #select * from userinfo where user=‘alex‘ and pwd=123
        #如果取到多条就是列表,里边有多个对象,取到一条,就是列表,里边有一个对象
        user_list=models.UserInfo.objects.filter(user=‘alex‘,pwd=‘123‘).all()
        #根据条件取数据库中的第一条数据
        user_list=models.UserInfo.objects.filter(user=‘alex‘,pwd=‘123‘).first()
        return HttpResponse(‘...‘)
    

      

  • 查看部门列表
  • 添加部门
views.py

def part_add(request):
    """
    添加部门
    :param request:
    :return:
    """
    if request.method==‘GET‘:
        return  render(request,‘part_add.html‘)
    else:
        ti=request.POST.get(‘title‘)
        #添加到数据库:models.Department
        models.Department.objects.create(title=ti)
        return redirect(‘/parts/‘)

parts_add.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="/static/plugins/bootstrap/css/bootstrap.css">
</head>
<body>

<div class="container">
    <form method="post">
        <div class="form-group">
            <h1>添加部门</h1>
            <label for="t1">部门名称</label>
            <input  id=‘t1‘ type="text" class="form-control" name="title">
        </div>
            <input type="‘submit" value="添加" class="btn btn-success">
            <button type="submit" class="btn btn-default">Submit</button>
    </form>
</div>
</body>
</html>
  • 删除部门

 

vewis.py

def part_del(request):
    """
    删除部门
    :param request:
    :return:
    """
    nid=request.GET.get(‘nid‘)
    #去数据库中将id=nid删除
    models.Department.objects.filter(id=nid).delete()
    return redirect(‘/parts/‘)

  

  •  编辑部门

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="container">
    <h1>编辑部门</h1>
    <form method="post">
        <div class="form-group">
            <span><label for="t1">部门名称</label></span>
            <input  id=‘t1‘ type="text" class="form-control" name="title" value="{{ val }}">
        </div>
            <button type="submit" class="btn btn-default">修改</button>
    </form>
</div>
</body>
</html>  

Django框架

标签:数据库   request   sage   lan   oca   替换   value   settings   int   

原文地址:https://www.cnblogs.com/wangmengzhu/p/8299958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!