9.6Django

9.6Django

2018-9-6 12:56:32

2018-9-6 18:32:22 

把那个用户列表的页面优化了一下!用了老师更好看的页面,但是功能还是那些!

就是修改一下url就好! 放在我我的github  :  https://github.com/TrueNewBee/pythonDemo

贴上业务逻辑的代码和昨天的差不多

Django还是非常nice的 具有综合方面知识!

from django.shortcuts import render, redirect, HttpResponse
from app01 import models


# 展示出版社列表
def publisher_list(request):
    """去数据库查出所有的出版社,填充到HTML,给用户返回"""
    ret = models.Publisher.objects.all().order_by("id")
    return render(request, "new_publisher_list.html", {"publisher_list": ret})


# 添加新的出版社
def add_publisher(request):
    error_msg = ""
    # 如果是POST请求,我就取到用户填写的数据
    if request.method == "POST":
        new_name = request.POST.get("publisher_name", None)
        # 判断用户名字是否为空
        if new_name:
            # 通过ORM去数据库新建一条记录
            models.Publisher.objects.create(name=new_name)
            # 引导用户访问出版社列表页,查看是否添加成功
            return redirect("/publisher_list/")
        else:
            error_msg = "出版社名字不能为空"
    # 用户第一次来,我给他返回一个用来填写的html页面
    return render(request, "add_publisher.html", {"error_msg": error_msg})


# 删除出版社
def del_publisher(request):
    # 删除指定的数据
    # 1. 从GET请求的参数里面拿到将要删除的数据的ID值
    del_id = request.GET.get("id", None)
    # 如果找到id值
    if del_id:
        # 去数据库删除当前id值得数据
        del_obj = models.Publisher.objects.get(id=del_id)
        # 删除
        del_obj.delete()
        # 返回删除后的页面,跳转到出版社的列表页,查看删除是否成功
        return redirect("/publisher_list/")
    else:
        return HttpResponse("数据不存在")


# 编辑出版社
def edit_publisher(request):
    if request.method == "GET":
        # 找到用户的ID
        edit_id = request.GET.get("id", None)
        if edit_id:
            # 获取到当前出版对象
            publisher_obj = models.Publisher.objects.get(id=edit_id)
            return render(request, "edit_publisher.html", {"publisher": publisher_obj})
    else:
        # 找到用户的ID
        edit_id = request.GET.get('id')
        # 找到修改后的出版社名字
        publisher = request.POST.get('publisher_name')
        # 数据库更新一下
        models.Publisher.objects.filter(id=edit_id).update(name=publisher)
        # 然后返回到出版社列表
        return redirect("/publisher_list/")

贴上笔记

day62 2018-05-02

1. 内容回顾
    Django
        1. 安装
            1. Django版本 1.11.xx
            2. 安装方式
                1. 命令行        --> Python环境(双版本,pip的使用)
                2. PyCharm安装
        2. 创建Django项目
            1. 创建方式
                1. 命令行创建方式
                    1. cd到你要保存Django项目的目录
                    2. Django-admin startproject 项目名   --> 会在当前目录创建Django项目
                2. PyCharm创建方式
                    1. File --> new project --> ...
                    2. 创建完之后一定要选在新窗口打开!!!
        3. 配置Django项目
            1. settings.py文件
                1. templates文件夹的位置
                2. 静态文件
                    1. STATIC_URL         --> 静态文件夹的别名(在HTML文件中用的)
                    2. STATICFILES_DIRS   --> 静态文件夹的真正路径
                3. 注释掉 csrf 相关的中间件
                4. Django项目连接的数据库信息
        4. Django WEB请求流程(简版)    
            1. 启动Django项目,等待用户连接
            2. 浏览器在地址栏输入URL,来连接我的Django项目
            3. 在urls.py中 找 路径和函数的 对应关系
            4. 执行对应的函数
            5. 返回响应
        5. views.py
            1. 专门用来定义处理请求的函数
                1. 基本必备三件套
                    from django.shortcuts import HttpResponse, render, redirect
                    1. HttpResponse("要返回的内容")            --> 通常用于直接返回数据
                    2. render(request, "html文件", {"k1": v1}) --> 返回一个HTML文件或者打开文件进行字符串替换
                    3. redirect("URL")                         --> 告诉用户的浏览器去访问其他的URL
            
                2. request相关
                    1. request.method     --> 查看请求的方法
                    2. request.POST       --> 获取POST请求的数据
                    
        6. ORM使用
            1. 什么是ORM? 
                是一种编程的方法论(模型), 和语言无关.(其他的语言也有类似的实现.)
                
            2. ORM的本质:
                类    --->    数据表
                对象  --->    数据行
                属性  --->    字段
                
                按照规定的语法写,自动翻译成对应的SQL语句.
                
            3. ORM的功能:    
                ORM操作数据表
                ORM操作数据行
                
            4. Django里ORM的使用:
                1. 手动创建数据库
                2. 在settings.py里面,配置数据库的连接信息
                    DATABASES = {
                        'default': {
                            'ENGINE': 'django.db.backends.mysql',
                            'NAME': 'day62',
                            'HOST': '127.0.0.1',
                            'PORT': 3306,
                            'USER': 'root',
                            'PASSWORD': '123456',
                        }
                    }
                3. 在项目/__init__.py告诉Django用pymysql模块代替MySQLdb来连接MySQL数据库
                    import pymysql
                    pymysql.install_as_MySQLdb()
                4. 在app/models.py里面定义类
                    # 出版社
                    class Publisher(models.Model):
                        id = models.AutoField(primary_key=True)  # 自增的ID主键
                        # 创建一个varchar(64)的唯一的不为空的字段
                        name = models.CharField(max_length=64, null=False, unique=True)
                5. 执行两个命令
                    1. python3 manage.py makemigrations   --> 把models.py里面的更改记录到小本本上
                    2. python3 manage.py migrate  --> 把更改翻译成SQL语句,去数据库执行

2. 今日内容
    1. GET请求和POST请求
        都属于HTTP协议规定的请求方法
        
    2. 什么时候用GET请求?
        1. 浏览器想要得到一个HTML页面的时候
        2. 搜索引擎查询关键字的时候       www.sogo.com/web/?query=迪丽热巴
        
    3. 什么时候用POST?
        1. 向后端提交数据
            1. 大段的数据
            2. 包含隐私的数据
            3. 上传文件
            
    4. 实际中GET和POST的应用场景
        1. GET:
            1. 直接在浏览器地址栏输入URL访问网站
            2. a标签
        2. POST:
            1. 登录注册
            2. 修改(新增)大段的数据
            3. 上传文件

3. 今日作业
    1. 上课的删除和编辑功能自己独立写出来
    2. 组内讨论:
        1. 每个组员依次说一下Django的请求怎么走的?
    3. 用Bootstrap把课上的页面写一下
    

创建你Django:

9.6Django