1. 程式人生 > >Django框架

Django框架

80端口 wan migration 行數 lin for userinfo ots input

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框架