zoukankan      html  css  js  c++  java
  • Django初识二

    1,在django中用于提交的form表单中的三要素:

      1.1>form标签要有action和method,上传文件需要额外指定的enctype

      1.2>获取用户输入的标签要有name属性(用于提交数据的时候作为键)

      1.3>必须要有submit按钮(要不然提交数据没法放到URL中)

    2,Django基础必会三件套

      form django.shortcuts import GttpsRespose(返回一个字符串), render(打开一个html文件,读取出来以后发送给浏览器), redirect(跳转页面,是跳转到一个可执行函数,再有函数的返回值,去返回一个html页面)  

      2.1>HttpResponse("ok")  -->把字符串的ok转化成二进制的bytes形式,然后按照HTTP响应的格式要求返回

      2.2>render(request, "login.html") -->打开文件,以二进制的方式读取内容,按照响应格式返回

      2.3>render(request, "login.html", {"key":"value"})  -->打开文件,读取内容(读出来是字符串,然后把"key"用"value"替换,按照响应格式返回浏览器)

      2.4>redirect("/index/")  -->在同网站不同地址间跳转(返回的是重定向的响应)

      2.5>redirect("https://www.baidu.com")  -->让浏览器访问指定的网址

    3,request:所有和请求相关的数据都封装在这个request对象中

      3.1>request.method -->当前这次请求的方法(GET/POST)

      3.2>request.GET -->取到URL里面携带的参数

      3.3>request.POST -->取到POST提交的数据(form表单提交的数据)

    4,模板语言 (HTML中农的特殊符号)

      {{ name }}  {{ "name":"闷骚哥" }}

    5,APP(项目中的一个包)

      5.1>Django中创建app:

        python manage.py startapp app,名

      52>注册到Django中:

        settings.py中的INSTALL_APPS = ["app名"]

    6,图书管理系统之出版社的增删改查

      6.1>表的结构设计

        6.1.1>出版社: id name

        6.1.2>作者:id name

        6.1.3>书: id title 出版社_id

        6.1.4>作者 _书_关系表: id书_id 作者_id 

    7,ORM的语句

      7.1>类名.objects.all()   -->返回的是这个类的所有的对象 放在一个列表里

      7.2>类名.objects.filter()  -->返回的是一个符合条件的对象列表

      7.3>类名.objects.get()   -->返回的是一个对象,如果没有,或者多个 符合条件的对象,都会报错

      7.4>类名.objects.create(name="刚刚获得的条件")  -->创建一个对象,返回的就是刚刚创建的那个对象  

       7.5>类名.objects.filter(id=).delete.()  -->删除对象

      7.6>obj=类名.objects.get(id="")  -->获取要修改的对象(根据id值)

        obj.name = "修改的新值"  -- 修改对象的属性(修改某行数据某个字段的值)     obj.save()    -->把修改的数据同步到数据库

    8,Django模板语言

      8.1>for循环

        {% for i in ret %}-------------------------->应用for循环一般是拿到的是一个对象的列表

          {{ forloop.counter }}    -------------->for循环从1开始计数

          {{ forloop.counter0 }}   --------------->for循环从0开始计数

        {{% endfor %}}     ------------------------>结束否循环的语句 

    9,登录函数的示例代码:

    # views业务逻辑代码
    from app01.models import UserInfo  # 把数据库导入进来
    def login(request):
    
        # 定义一个全局变量当第一次进来获取页面的时候,不显示html变量的信息
    
        
        error_msg = ""
    
        if request.method == "POST":
    
            # 1, 第二次进来的时候是POST请求要获取用户输入的用户名和密码
    
             new_email = request.POST.get("email")
    
             new_pwd = request.POST.get("pwd")
    
            # 2, 从数据库中读取数据并校验用户输入的是否合法
              ret_obj = UserInfo.objects.filter(email= new_email, pwd= new_pwd)
            # 判断匹配是否成功
            if ret_obj:    # 此时如果匹配成功,得到的是匹配的对象
    
                # 如果匹配成功,就说明存在该用户,让用户执行可执行得到操作页面
                return redirect("/index/")  # 跳转到index这个页面,同网站跳转用绝对路径
        
            # 假如没有匹配成功就要给用于提示页面
    
            error_msg = "邮箱或者密码不正确 "
        # 3, 如果是第一次进来,用户需要获得一个登录页面,这时是一个get请求
    
         return render(request, "login.html", {"error_msg":error_msg})  
    
    
    
    def index(reuest):
    
          return render(request, "index.html", {"error_msg":error_msg})

     10,出版社的增删改查

    # 查看所有的出版社列表
    def press_list(request):
        # 读取数据库中的数据
        press_data = Press.objects.all()
        # 返回出版社页面 
        return render(request, "press_list.html", {"press_data":press_data
    })
    
    def add_press(request):
        # 2 ,第二次进来是POST请求时用户提交信息的时候
        if request.method == "POST":
            # 获取用户输入的信息
            new_press_name = request.POST.get("name")
            # 把获取到的信息更新的到数据库中
            Press.objects.create(name=new_press_name)
            # 给用户展示添加以后的页面
            return redirect("/press_list/")
       #1 第一次进来是get请求,需要返回给用户一个增加的页面
         return render(request, "add_press.html")
    def delete_press(request):
        # 1 获取到用户选择删除的id值
        delete_id = request.GET.get("id")
        # 2找到要删除的对象并且删除
    
        Press.objects.filter(id=delete_id).delete()
    
        # 3 向用户展示删除以后额结果
    
        return redirect("/press_list/")
    def edit_press(request):
        
        
        # 1 获取用户要删除的出版社id
        edit_id = request.GET.get("id")
        # 2 获取该id值的对应的对象
        edit_obj = Press.objectes.get(id= edit_id)
    
        # 3 第二次进来是POST请求,这次是用户提交修改过后的数据
    
        if request.method == "POST":
    
            # 获取用户输入的出版社名称
    
            edit_press_name = request.POST.get("name")
    
            # 更新到数据库中
    
            edit_obj.name = edit_press_name
    
            # 写到数据库中要save()刷新一下
    
            edit_obj.save()
    
            # 给用户展示删除后的出版社清单
    
            return redirect("/press_list/")
    
        # 2第一次进来的时候是GET请求,给用户编辑的页面
    
        # 需要先从数据库中获取到被点击删除的出版社名称 
    
        press_name = edot _obj.name
    
        return render(request, "edit_press.html", {"press_data":press_name})
  • 相关阅读:
    [Maid] Write Tasks in Markdown with Maid
    [React] Preview and edit a component live with React Live
    [React] Build a slide deck with mdx-deck using Markdown + React
    [React] Spread Component Props in JSX with React
    重载new delete操作符是怎么调用的
    oracle如何设置show parameter显示隐含参数
    Google用户登录界面 Android实现
    Jquery 动态生成表单 并将表单数据 批量通过Ajax插入到数据库
    消息机4_B
    jQuery中对 input 控件的操作
  • 原文地址:https://www.cnblogs.com/ljc-0923/p/9806176.html
Copyright © 2011-2022 走看看